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

时间:2010-05-26 07:08:58

标签: asp.net master-pages

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

  

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

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:17)

我认为你确实喜欢这样:

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

 </form>
</asp:Content>

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

所以你只需删除它就可以了。

答案 1 :(得分:9)

听起来你在主页面和页面中都有一个表单标签,它会抛出错误。

你只能有一个。

答案 2 :(得分:4)

您的网页是否包含这些

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

标签,这些都是你的控件吗?你应该只有表格 MasterPage中的标签。


以下是我的一些 理解和建议:

Html元素可以放在html页面的主体和html页面中 支持多个元素,但不能嵌套每个元素 另外,你可以从W3C html中找到详细的描述 规格:

FORM元素

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

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

此外,如果你想通过多种形式做什么只是让我们的 页面发布到多个页面,我认为你可以考虑使用新的 ASP.NET 2.0中跨页面发布的功能。这可以帮助我们使用按钮 控件回发到不同的页面而不打开多个表单 页面:

ASP.NET网页中的跨页面发布

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

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

答案 3 :(得分:3)

仅使用一个服务器端表单标记。

检查您的母版页<form runat="server"> - 应该只有一个。

为什么你需要不止一个?

答案 4 :(得分:0)

有时当您渲染当前页面时,如下面的代码所示将生成相同的错误

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

那么我们如何排序呢?

答案 5 :(得分:0)

请从“ form”标签中删除“ runat =“ server”“,它将完全起作用。