我正在使用母版页,当我运行此页面时,它显示以下错误消息:
一个页面只能有一个服务器端表单标签
我该如何解决这个问题?
我想你是这样的:
<asp:Content ID="Content2" ContentPlaceHolderID="MasterContent" runat="server">
<form id="form1" runat="server">
</form>
</asp:Content>
不需要表单标签。因为您在母版页中已经有相同的标签。
所以你只需删除它,它就应该可以工作了。
听起来您在母版页和引发错误的页面中都有一个表单标签。
你只能有一个。
你的页面是否包含这些
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
</asp:content>
标签,你所有的控件都在里面吗?你应该只有表格 MasterPage 中的标签。
这是我的一些 理解与建议:
html 元素可以放在 html 页面的 body 中,而 html 页面不 支持多个元素,但它们不能分别嵌套 其他的,你可以从W3C html中找到详细的描述 规格:
http://www.w3.org/MarkUp/html3/forms.html
而对于ASP.NET web表单页面,它是基于单一的服务器端表单 包含所有控件的元素,所以通常我们不 建议我们放多个元素。然而,这仍然是 在 ASP.NET 页面(母版页)中受支持,我认为您的问题 母版页应该是由不支持的嵌套元素引起的,并且 同一级别的多个应该没问题。例如:
另外,如果你想通过多种形式做的只是让我们的 page posting to multiple pages,我觉得你可以考虑用new ASP.NET 2.0 中的跨页发布功能。这可以帮助我们使用按钮 控件回发到不同的页面,而无需在多个表单上 页面:
只使用一个服务器端表单标签。
检查您的母版页
<form runat="server">
- 应该只有一个。
为什么需要不止一个?
有时当你渲染当前页面如下面的代码会产生同样的错误
StringWriter str_wrt = new StringWriter();
HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt);
Page.RenderControl(html_wrt);
String HTML = str_wrt.ToString();
那我们怎么排序呢?
请从“form”标签中删除“runat="server"”然后它肯定会工作。
如果你呈现页面,那么你需要调用 响应.End() 以防止渲染整个页面。