我正在使用母版页,但运行页面时出现以下错误信息:
一个页面只能有一个服务器端表单标签
我该如何解决这个问题?
我正在使用母版页,但运行页面时出现以下错误信息:
一个页面只能有一个服务器端表单标签
我该如何解决这个问题?
我认为你是这样做的:
<asp:Content ID="Content2" ContentPlaceHolderID="MasterContent" runat="server">
<form id="form1" runat="server">
</form>
</asp:Content>
不需要使用form标记,因为在母版页中已经存在相同的标记。
所以,只需删除它,就可以正常工作了。
看起来您在Master页面和出错的页面中都有一个表单标签。
你只能有一个表单标签。
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
</asp:content>
标签,你的控件是否都在这些标签内?你的MasterPage只应该有Form标签。
以下是我的理解和建议:
HTML元素可以放置在HTML页面的主体中,并且HTML页面支持多个Form元素,但是它们不能嵌套在彼此内部,您可以从W3C HTML规范中找到详细描述:
http://www.w3.org/MarkUp/html3/forms.html
对于ASP.NET Web表单页面而言,它基于一个包含所有控件的单个服务器端Form元素,因此我们通常不建议放置多个Form元素。但是,在ASP.NET页面(主控页)中仍然支持此功能,并且我认为您的主控页中存在不受支持的嵌套Form元素,同级别中的多个Form标记应该没有问题。例如:
此外,如果您想通过多个表单来实现将我们的页面发布到多个页面,那么我认为您可以考虑使用ASP.NET 2.0中的新功能进行跨页发布。这可以帮助我们使用按钮控件向不同的页面发布回发,而无需在页面上拥有多个Form元素:
只使用一个服务器端表单标签。
检查您的母版页是否包含<form runat="server">
- 应该只有一个。
为什么需要多个呢?
StringWriter str_wrt = new StringWriter();
HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt);
Page.RenderControl(html_wrt);
String HTML = str_wrt.ToString();
Response.End()
以防止呈现整个页面。
runat="server"
属性,如果我没记错的话。 - Russ Cam