【问题标题】:A page can only have one server-side form tag, but I need two一个页面只能有一个服务器端表单标签,但我需要两个
【发布时间】:2015-03-24 05:04:51
【问题描述】:

目前我的 ASP.NET Web 应用程序正在使用母版页、嵌套母版页和内容页。在嵌套母版页上,我有一个用于导航链接的内容占位符,另一个用于主要内容。我有两个的原因是因为我的主母版页已经为我的其余页面确定了固定格式,而我正在使用嵌套母版页,因为我需要为我的网站中使用的不同角色提供不同类型的导航链接。但是,对于导航链接,LinkBut​​ton 用于退出按钮,因此它需要我使用带有 runat="server" 的表单标签才能运行该页面。但是,在我的内容页面中,我的主要内容还需要一个表单 runat="server" 标记。 :-( 有没有人提出如何解决这个问题的想法?我想坚持使用多个内容占位符,所以小的更改不会影响整个页面。

无论如何,这是我的母版页代码的 sn-p

<asp:Content ID="Content1" ContentPlaceHolderID="navigationlinks" runat="server">
<form id="navForm" runat="server">
    <a class="toggleMenu" href="#">
        <img src="images/nav_icon.png" alt="" />
    </a>
    <ul class="nav" id="nav">
        <li class="current"><a href="UserHome.aspx">Home</a></li>
        <li><a href="UserCompetition.aspx">Competition</a></li>
        <li><a href="UserGallery.aspx">Gallery</a></li>
        <li class="dropdown">
            <a class="dropdown-toggle" data-toggle="dropdown"     href="#">Discussions
            </a>
            <ul class="dropdown-menu">
                <li><a href="UserDiscussionCreate.aspx">Create Discussion</a></li>
                <li><a href="UserDiscussionView.aspx">View Discussion</a></li>
            </ul>
        </li>
        <li><a href="UserSubmission.aspx">Submission</a></li>
        <li><a href="UserResults.aspx">Results</a></li>
        <li><a href="UserMyAccount.aspx">My Account</a></li>
        <div class="clear"></div>
    </ul>
    <script type="text/javascript" src="js/responsive-nav.js"></script>
</form>

<asp:Content ID="Content3" ContentPlaceHolderID="Content1" runat="server">
    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder>
</asp:Content>

ContentPlaceHolder1 用于内容页面中的主要内容。因此,即使表单标签已经在“导航链接”中,我也需要另一个表单标签

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    在我的内容页面中,我的主要内容还需要一个表单 runat="server" 标记。

    您已经拥有它,因为此页面有一个包含服务器端表单标签的母版页! 当您拥有一个带有

    的母版页时
    <form runat="server">...</form>
    

    使用该母版页的所有页面都将具有该表单,无需在页面中再次添加它!

    编辑:

    只需删除任何页面或嵌套母版页内的所有表单标签,并将其添加到包含所有元素的母版页。

    在具有&lt;body&gt; 标记的母版页中,在正文之后添加&lt;form runat="server"&gt; 标记并在&lt;/body&gt; 之前将其关闭。并删除所有其他表单标签。

    【讨论】:

    • 我在一些编辑中添加了,在navigationallinks内容占位符中添加表单标签是不够的,我也需要它用于contentplaceholder1:-(
    • @user3763216 不,你没有。退后一步,因为如果您要解决的是 formatting,那与您的要求无关。在任何情况下,您都不能嵌套表单 - 无论是 asp.net 还是普通的 HTML。
    • @EdSF 我尝试从我的内容页面中删除它,我得到了这个:Control 'Content1_ContentPlaceHolder1_tb_name' of type 'TextBox' must be placed inside a form tag with runat=server.
    • 然后将它放在您的母版页中,其中 ContentPlaceHolder 在带有 runat="server" 的表单中。大多数人都是这样做的。
    • 仅在为其他母版页提供服务的母版页内使用表单,包装所有内容。不在嵌套母版页内。 (更新了答案)
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 2012-08-29
    • 2011-08-16
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    相关资源
    最近更新 更多