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

问题描述 投票:0回答:7

我正在使用母版页,当我运行此页面时,它显示以下错误消息:

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

我该如何解决这个问题?

asp.net master-pages
7个回答
28
投票

我想你是这样的:

<asp:Content ID="Content2" ContentPlaceHolderID="MasterContent" runat="server">
  <form id="form1" runat="server">

 </form>
</asp:Content>

不需要表单标签。因为您在母版页中已经有相同的标签。

所以你只需删除它,它就应该可以工作了。


10
投票

听起来您在母版页和引发错误的页面中都有一个表单标签。

你只能有一个。


4
投票

你的页面是否包含这些

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
</asp:content>

标签,你所有的控件都在里面吗?你应该只有表格 MasterPage 中的标签。


这是我的一些 理解与建议:

html 元素可以放在 html 页面的 body 中,而 html 页面不 支持多个元素,但它们不能分别嵌套 其他的,你可以从W3C html中找到详细的描述 规格:

FORM 元素

http://www.w3.org/MarkUp/html3/forms.html

而对于ASP.NET web表单页面,它是基于单一的服务器端表单 包含所有控件的元素,所以通常我们不 建议我们放多个元素。然而,这仍然是 在 ASP.NET 页面(母版页)中受支持,我认为您的问题 母版页应该是由不支持的嵌套元素引起的,并且 同一级别的多个应该没问题。例如:

另外,如果你想通过多种形式做的只是让我们的 page posting to multiple pages,我觉得你可以考虑用new ASP.NET 2.0 中的跨页发布功能。这可以帮助我们使用按钮 控件回发到不同的页面,而无需在多个表单上 页面:

ASP.NET 网页中的跨页发布

http://msdn2.microsoft.com/zh-cn/lib...39(VS.80).aspx

http://msdn2.microsoft.com/en-us/lib...40(VS.80).aspx


4
投票

只使用一个服务器端表单标签。

检查您的母版页

<form runat="server">
- 应该只有一个。

为什么需要不止一个?


1
投票

有时当你渲染当前页面如下面的代码会产生同样的错误

StringWriter str_wrt = new StringWriter();
HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt);
Page.RenderControl(html_wrt);
String HTML = str_wrt.ToString();

那我们怎么排序呢?


1
投票

请从“form”标签中删除“runat="server"”然后它肯定会工作。


0
投票

如果你呈现页面,那么你需要调用 响应.End() 以防止渲染整个页面。

© www.soinside.com 2019 - 2024. All rights reserved.