【问题标题】:Implemented a Master Page to my site, and now forms doesn't work在我的网站上实施了母版页,现在表单不起作用
【发布时间】:2011-06-17 13:33:16
【问题描述】:

我刚刚使用母版页实现了我的网站。所以它加载相同的页眉和页脚 对于每一页, 现在我的表格不再起作用了。 尝试将<form> 标记移到母版页内部和外部,但仍然没有。

母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="WebSite.master.cs" Inherits="WebSite.WebSite" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title><asp:ContentPlaceHolder ID="titleContent" runat="server" /></title>
    <link href="Resources/css/styles.css" rel="stylesheet" type="text/css" />
    <link href="Resources/css/jqModal.css" rel="stylesheet" type="text/css" />
    <link href="Resources/css/boxy.css" rel="stylesheet" type="text/css" />
    <link href="Resources/css/form.css" rel="stylesheet" type="text/css" />
    <script src="Resources/js/swfobject.js" type="text/javascript" > </script>
    <script src="Resources/js/jquery-1.3.2.min.js" type="text/javascript" > </script>
    <script src="Resources/js/jqModal.js" type="text/javascript"> </script>
    <script src="Resources/js/soundmanager.js" type="text/javascript" > </script>
    <script src="Resources/js/JScriptFunctions.js" type="text/javascript" > </script>
    <script src="Resources/js/jquery.boxy.js" type="text/javascript" ></script>
    <script src="Resources/js/styled.js" type="text/javascript" ></script>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form name="aspnetForm" method="post" id="aspnetForm" runat="server">
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    <script type="text/javascript">
    //<![CDATA[
        var theForm = document.forms['aspnetForm'];
        if (!theForm) {
            theForm = document.aspnetForm;
        }
        function __doPostBack(eventTarget, eventArgument) {
            if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
                theForm.__EVENTTARGET.value = eventTarget;
                theForm.__EVENTARGUMENT.value = eventArgument;
                theForm.submit();
            }
        }
    //]]>
    </script>
    <div id="wrapper">
        <div id="animation">
            <div id="ctl00_singleBannerHomePage_pnlFlashContent">
            </div>
            <script language="javascript" type="text/javascript">
                generateBanner(980, 220, 'ctl00_singleBannerHomePage_pnlFlashContent', 'bannersingleBannerHomePage', 'http://www.WebSite.com//Resources//flash/topmenu.swf', '');
            </script>
        </div>
        <div class="banner" style="text-align: center;">
            <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="960" height="120"
                id="logo_250x105" align="middle">
                <param name="movie" value="Resources/flash/banner_960x120.swf">
                <param name="quality" value="high">
                <param name="play" value="true">
                <param name="loop" value="true">
                <param name="wmode" value="transparent">
                <param name="scale" value="showall">
                <param name="menu" value="true">
                <param name="devicefont" value="false">
                <param name="salign" value="">
                <param name="allowScriptAccess" value="sameDomain">
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="Resources/flash/banner_960x120.swf"
                    width="960" height="120">
                    <param name="movie" value="/resources/flash/banner_960x120.swf">
                    <param name="quality" value="high">
                    <param name="play" value="true">
                    <param name="loop" value="true">
                    <param name="wmode" value="transparent">
                    <param name="scale" value="showall">
                    <param name="menu" value="true">
                    <param name="devicefont" value="false">
                    <param name="salign" value="">
                    <param name="allowScriptAccess" value="sameDomain">
                    <!--<![endif]-->
                    <a href="https://www.adobe.com/go/getflash">
                        <img src="Resources/get_flash_player.gif" alt="Get Adobe Flash player">
                    </a>
                    <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
            </object>
        </div>
    <asp:ContentPlaceHolder ID="Main" runat="server">
    </asp:ContentPlaceHolder>
    <div id="footer">
        <div id="menu_footer">
            <ul>
                <li><a id="ctl01_lnkMenuOption" href="http://www.WebSite.com/">
                    Home</a></li>
                <li class="separator">|</li>
                <li><a id="ctl03_lnkMenuOption" href="http://www.WebSite.com/">
                    Login</a></li>
                <li class="separator">|</li>
                <li><a id="ctl05_lnkMenuOption" href="http://www.WebSite.com/register">
                    Free Register</a></li>
                <li class="separator">|</li>
                <li><a id="ctl07_lnkMenuOption" href="http://www.WebSite.com/how">
                    How Does it work</a></li>
                <li class="separator">|</li>
                <li><a id="ctl15_lnkMenuOption" href="http://www.WebSite.com/winners">
                    Winners List</a></li>
                <li class="separator">|</li>
                <li><a id="ctl17_lnkMenuOption" href="http://www.WebSite.com/myAccount">
                    Members</a></li>
                <li class="separator">|</li>
                <li><a id="ctl19_lnkMenuOption" href="http://www.WebSite.com/">
                    Site Map</a></li>
                <li class="separator">|</li>
                <li><a id="ctl21_lnkMenuOption" href="http://www.WebSite.com/contact">
                    Contact</a></li>
                <li class="separator">|</li>
                <li><a id="ctl23_lnkMenuOption" href="http://www.WebSite.com/terms">
                    Terms & Policy</a></li>
                <li class="separator">|</li>
                <li><a id="ctl25_lnkMenuOption" href="http://www.WebSite.com/about">
                    About</a></li>
            </ul>
            <ul>
                <li><a href="http://www.WebSite.com/" target="_blank">Beta</a></li>
                <li class="separator">|</li>
                <li><a href="http://www.WebSite.com/" target="_blank">Beta</a></li>
                <li class="separator">|</li>
                <li><a href="http://www.WebSite.com/" target="_blank">Beta</a></li>
                <li class="separator">|</li>
                <li><a href="http://www.WebSite.com/" target="_blank">Beta</a></li>
                <li class="separator">|</li>
                <li><a href="http://www.WebSite.com/" target="_blank">Beta</a></li>
                <li class="separator">|</li>
                <li><a href="http://www.WebSite.com/" target="_blank">Beta</a></li>
                <li class="separator">|</li>
                <li>
                    <!-- AddThis Button BEGIN -->
                    <div class="addthis_toolbox addthis_default_style ">
                    <a class="addthis_button_facebook_like" addthis:url="http://www.facebook.com/pages/WebSite/187442987973985" ></a>
                    <a class="addthis_button_tweet" addthis:url="http://www.WebSite.com/" ></a>
                    <a class="addthis_counter addthis_pill_style" addthis:url="http://www.WebSite.com/" ></a>
                    </div>
                    <script type="text/javascript">                     var addthis_config = { "data_track_clickback": true };</script>
                    <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=danpe"></script>
                    <!-- AddThis Button END -->
                </li>
                <li class="separator">|</li>
                <li><a href="http://www.WebSite.com/" target="_blank">WebSite © 2011</a></li>
            </ul>
        </div>
    </div>
    <object type="application/x-shockwave-flash" id="flashAlert" name="flashAlert" data="Resources/flash/AlertPlayer.swf"
        width="1" height="1">
    </object>
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#adscaptcha_facebook_like_holder').remove();
            $('#adscaptcha_buttons_holder').remove();
            $('#adscaptcha_r4').remove();
        });
    </script>
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-23547527-1']);
        _gaq.push(['_setDomainName', '.WebSite.com']);
        _gaq.push(['_trackPageview']);

        (function () {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
    </script>
</body>
</html>

default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Default" MasterPageFile="~/WebSite.Master" Title="" %>

<asp:Content ID="ContentTitle" ContentPlaceHolderID="titleContent" Runat="Server">
    WebSite!
</asp:Content>

<asp:Content ID="ContentHead" ContentPlaceHolderID="head" Runat="Server">
    <meta name="AUTHOR" content="WebSite.com"> 
    <meta name="CLASSIFACTION" content="auction, auctions"> 
    <meta name="RATING" content="GENERAL"> 
    <meta name="DISTRIBUTION" content="GLOBAL"> 
    <meta name="REVISIT" content="1 DAYS"> 
    <meta name="ROBOTS" content="INDEX,FOLLOW">
    <meta property="og:title" content="WebSite! - SecondLife Auctions" />
    <meta property="og:site_name" content="WebSite" />
    <meta property="og:image" content="hhttp://www.WebSite.com/Resources/images/logo.png" />
    <meta property="og:url" content="http://www.WebSite.com/" />
    <meta property="fb:admins" content="1277633739" />
    <link rel="image_src" href="http://www.WebSite.com/Resources/images/logo.png" />
    <link rel="SHORTCUT ICON" href="http://www.WebSite.com/WebSite.ico" />
    <script type="text/javascript">
        function alertMe(message) {
            var options = $.extend({ title: "Information" }, options || {});
            var dialog = new Boxy("<div><p>" + message + "<a href='#' onclick='Boxy.get(this).hide(); return false'>Close me!</a></p></div>", options);
            allDialogs.push(dialog);
            return false;
        }
    </script>
    <script type="text/javascript">
        var message = "Impossible Action";
        function clickIE() { if (document.all) { return false; } }
        function clickNS(e) {
            if
        (document.layers || (document.getElementById && !document.all)) {
                if (e.which == 2 || e.which == 3) { return false; }
            }
        }
        if (document.layers)
        { document.captureEvents(Event.MOUSEDOWN); document.onmousedown = clickNS; }
        else { document.onmouseup = clickNS; document.oncontextmenu = clickIE; }
        document.oncontextmenu = new Function("return false")
    </script>
    <style type="text/css" media="screen">
        #ctl00_singleBannerHomePage_pnlFlashContent
        {
            visibility: hidden;
        }
    </style>
</asp:Content>
<asp:Content ID="ContentMain" ContentPlaceHolderID="Main" Runat="Server" >
    <div id="content">
        <div class="sign-in-home">
            <div class="login-form-home">
                <% Response.Write(LoginPanel()); %>
                <input type="submit" name="cmdLogin" value="Login" id="cmdLogin" class="red-button" tabindex="3" runat="server" />
            </div>
        </div>
        <div class="login-text-home"></div>
    </div>
    <div class="sort-by-home">
        <% Response.Write(SortPanel()); %>
    </div>
    <% Response.Write(Auctions()); %>
    <script type="text/javascript">
        $(document).ready(function () {
            startAuctionsServiceHomePage();
        });
    </script>
</asp:content>

default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Page_Load");
    if (Request.Form["cmdLogin"] != null && Request.Form["cmdLogin"] != "")
    {
        Response.Write("cmdLogin");
    }
}

问题在于 Respone.Write("cmdLogin");不显示,它曾经在我拥有母版页之前显示。

【问题讨论】:

  • 请向我们展示您的母版页和使用它的页面。
  • “不起作用”是什么意思?您是否收到 HTML 错误代码、空白页或其他内容?
  • 看起来您从网站发布了输出标记。或者您是否真的编写了 asp 生成的回发脚本?你能把上面的代码改成你在.master文件中的代码而不是生成的文件吗?
  • @mtazva 它什么都不做,只是刷新页面。 @mrK 我从我的 .master 页面复制粘贴它不是生成的文件

标签: asp.net forms master-pages


【解决方案1】:

即使您使用母版页,您仍然只能从中获得一个标记。所以这样看:

母版页:

<html>
<head>
</head>
<body>
<form method='POST' action='index.aspx'>

<placeholder>

</form>
</body>
</html>

网络表单:

<content>
<input type='text' value='hello' />
<input type='submit' value='Submit' />
</content>

输出标记

<html>
<head>
</head>
<body>
<form method='POST' action='index.aspx'>

<input type='text' value='hello' />
<input type='submit' value='Submit' />

</form>
</body>
</html>

关键是,如果您在两者中都使用了一个表单,那么如果您在两者中都有表单,那么您可以期望嵌套表单出现在最终标记上。这只是它的外观轮廓。如果您发布您的网页,我们可以为您提供更适当的帮助。

编辑

利用 C# 中可用的 OOP - 创建一个 Button 对象并将其附加到页面。您将始终以这种方式引用它。避免在 asp.Net 中写入响应

【讨论】:

  • 对不起,我在您发布代码之前发布了该内容。唯一的区别是我的表单在母版页上。
  • @mrK 是的,我也将表单更改为在 Master 上,但仍然没有。
  • 我认为您的问题可能是您正在重写由页面中的 .Net 结构编写的 javascript。 CDATA 标记内的脚本可能会覆盖 .Net 函数。你在视觉工作室工作吗?
  • 是的visual studio ..我总是有 //
  • 你有什么理由使用 response.write() 吗?
【解决方案2】:

@Danpe - 在单击 cmdLogin 按钮之前,您是否查看过呈现的页面源代码?您是否在 page_load 中放置了一个断点以查看 Request.Form["cmdLogin"] 的值是多少?

除非您使用的是Framework 4和静态控件ID机制,否则cmdLogin按钮的ID/名称实际上不会是“cmdLogin”,而是一个修改后的名称,以确保ID不会与页面中的其他控件冲突。我相信这是 ASP.Net 自成立以来的标准行为。

由于 cmdLogin 是一个服务器端控件,实际上最好在代码隐藏中添加一个按钮单击事件处理程序,而不是尝试手动解析表单参数。您似乎在与 Web 表单提供的功能作斗争。

【讨论】:

    【解决方案3】:

    改变这个:

    <input type="submit" name="cmdLogin" value="Login" id="cmdLogin" class="red-button" tabindex="3" runat="server" />
    

    到这里:

    <asp:Button id="cmdLogin" Text="Login" CSSClass="red-button" tabindex="3" runat="server" />
    

    然后在 .cs 文件中,您可以通过以下方式访问按钮:

    cmdLogin.Text = "newText";
    

    编辑

    将此添加到 asp:Button 标记

    OnClick="ClickedFunction"
    

    将此添加到 .cs 文件中:

    protected override void onInit(EventArgs e)
    {
        cmdLogin.Click += new EventHandler(cmdLogin_click);
    }
    
    void cmdLogin_click(object sender, EventArgs e)
    {
        //Code for click here
    }
    

    【讨论】:

    • 如果我有超过 1 个提交按钮,我如何知道点击了哪个按钮?使用 if (IsPostBack) 就像我使用的 if (Request.Form["cmdLogin"] != null && Request.Form["cmdLogin"] != "") 现在不起作用
    • 感谢最后一个问题,如果我有 1 个按钮,我使用这个:cmdLogin.Name = "cmdLogout"; cmdLogin.Value = "注销"; cmdLogin.ID = "cmdLogout"; else if (cmdLogin.Value == "Logout") 不起作用...
    • 最好只添加第二个按钮,并在单击的最后一行输入 cmdLogin.Visible = false; cmdLogout.Visible = true;使用两个按钮来回切换它们的可见性。
    【解决方案4】:

    将您的表单声明移至母版页,例如:

    <body>
        <form id="form1" runat="server">
    

    【讨论】:

      【解决方案5】:

      尝试从母版页中删除此块:

      <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
      <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
      <script type="text/javascript">
      //<![CDATA[
          var theForm = document.forms['aspnetForm'];
          if (!theForm) {
              theForm = document.aspnetForm;
          }
          function __doPostBack(eventTarget, eventArgument) {
              if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
                  theForm.__EVENTTARGET.value = eventTarget;
                  theForm.__EVENTARGUMENT.value = eventArgument;
                  theForm.submit();
              }
          }
      //]]>
      </script>
      

      【讨论】:

      • 您期望 Response.Write("cmdLogin") 会发生什么?因为应该发生的只是字符串“cmdLogin”包含在结果中,可能就在页面顶部 - 尝试查看结果源,然后直接查看页面顶部。
      • 是的,response.write 只是为了调试,当我点击提交时它没有显示出来。
      猜你喜欢
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多