如果页面上已经有带有runat server属性的表单,为什么.NET会从页面中拆除一个<form>标签?

5
它不会删除第二个表单标签内的所有内容,只是从页面中隐藏了
标签。有什么想法和解决方法吗?
5个回答

5

HTML中不允许嵌套表单。因此,您不能在服务器表单内添加另一个表单。

但在ASP.NET中,在服务器表单之外添加get-forms是完全合法的。


2
我将嵌套表单移动到外部以解决此问题。

1

.NET WebForms将整个应用程序包装在一个<form>标记中,这可能会在添加其他<form>标记到页面时引起问题。我的同事找到了解决嵌套表单问题的方法。

</form> <!-- This tag closes the WebForms form tag -->
<form action="/form/endpoint/foo">
...
</form>

在你的自定义表单上方添加一个独立的闭合标签</form>:WebForms会在自定义表单开始前关闭包装表单标签,以避免嵌套表单块。

1
你不能嵌套表单标签。如果你想更好地控制标记,可以考虑转向 ASP.NET MVC;或者不使用 ASP.NET 服务器控件,这样你就可以包含多个表单标签,而无需确保控件在带有 runat server 属性的表单标签内,但是这样你就无法在代码后台中获得细粒度访问,并且必须开始使用 request.form 集合来检索 postback 值。

0

ASP.NET将所有内容都封装在一个单一的表单中的原因是,当发生回发时,整个表单都会被发送回服务器,并且您可以访问页面上的每个元素。

也就是说,您可以从代码后端修改元素的属性(myTextbox.Text = 'Hello';)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接