【问题标题】:A page can have only one server-side Form tag. form error in ASP.NET一个页面只能有一个服务器端 Form 标签。 ASP.NET 中的表单错误
【发布时间】:2014-06-26 06:06:48
【问题描述】:

在下面的编码中,这里我向您展示了我的母版页和菜单用户控件(添加到母版页的菜单用户控件)。在这里它显示了错误,

当我将用户控件包裹在 runat="server" 周围时产生错误

一个页面只能有一个服务器端表单标签。

我的主页

<head runat="server">
 <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

<body>
<uc1:Menu runat="server" ID="Menu" />

<div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>

</body>

我的用户控件

<form id="text" runat="server">
<asp:LinkButton ID="link_logout" Text="Logout" OnClick="link_logout_Click" runat="server" />
</form>

<%} %>

【问题讨论】:

  • 这是因为一个页面只能有一个服务器端的Form标签。您有 2 个,因为 ASP.NET 在呈现母版页时添加了一个。所以你的用户控件AFAIK中不能有表单标签
  • 显然你可以有多个表单标签,但有黑客...stackoverflow.com/questions/7544454/…
  • @geedubb 当我从用户控件中删除 runat="server" 时,它会显示此错误 >> 必须将类型为“LinkBut​​ton”的控件“Menu_link_logout”放在带有 runat=server 的表单标记内。
  • 你能检查你的帖子,因为它最后有&lt;%} %&gt; - 这是故意的吗?
  • @geedubb 是 serversideone 从客户端使用

标签: c# asp.net c#-4.0


【解决方案1】:

即使我们使用母版页和内容页的组合,页面中也只允许一个表单元素。您可以从子页面中删除标签,因为您的母版页已经包含表单标签并且它会起作用。

【讨论】:

    【解决方案2】:

    您应该像这样将form 添加到您的母版页:

    <head runat="server">
     <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    
    <body>
      <form id="form1" runat="server">
        <uc1:Menu runat="server" ID="Menu" />
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
      </form>
    </body>
    

    您的用户控件应该如下所示(不需要form 标签):

    <asp:LinkButton ID="link_logout" Text="Logout" OnClick="link_logout_Click" runat="server" />
    

    【讨论】:

    • 您的内容页面代码中是否包含表单标签?请使用内容页面的详细信息更新您的问题
    猜你喜欢
    • 2020-05-26
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2015-10-15
    • 2012-08-29
    • 2014-12-07
    • 2011-02-24
    相关资源
    最近更新 更多