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

vfhzx4xs  于 2023-03-04  发布在  .NET
关注(0)|答案(7)|浏览(188)

我正在使用母版页,当我运行此页时,它显示以下错误消息:
一个页面只能有一个服务器端表单标记
我怎样才能解决这个问题?

njthzxwz

njthzxwz1#

我觉得你是这样做的:

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

 </form>
</asp:Content>

不需要表单标记,因为母版页中已有相同的标记。
所以你只要把它去掉它就能工作了。

vmdwslir

vmdwslir2#

听起来像是母版页和引发错误的页中有一个form标记。
你只能有一个。

kse8i1jr

kse8i1jr3#

您的页面包含这些内容吗

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

标签,并且所有控件都在这些标签中吗?母版页中应该只有Form标签。
以下是我的一些理解和建议:
Html元素可以放在html页面的主体中,html页面也支持多个元素,但是它们不能相互嵌套,你可以从W3C html规范中找到详细的描述:

FORM元素

http://www.w3.org/MarkUp/html3/forms.html
至于ASP.NET网页表单,它是基于一个服务器端的表单元素,其中包含了所有的控件,所以一般我们不建议我们把多个元素。但是,这仍然是支持在ASP.NET网页(母版页),我认为你的母版页的问题应该是由不支持嵌套元素引起的,多个在同一级别应该是可以的。例如:
另外,如果你想通过多个表单做的只是让我们的页面发布到多个页面,我想你可以考虑使用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

mec1mxoz

mec1mxoz4#

只使用一个服务器端窗体标记。
检查您的母版页是否有<form runat="server">-应该只有一个。
为什么你需要一个以上?

jxct1oxe

jxct1oxe5#

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

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

那我们该怎么办呢?

x6492ojm

x6492ojm6#

请删除“runat=“服务器”“从“表单”标签,然后它将明确工作。

sf6xfgos

sf6xfgos7#

如果要呈现页面,则需要调用Response.End()来防止呈现整个页面。

相关问题