如果已经有一个带有runat服务器属性的表单?</form>,为什么.NET会从页面中剥离一个<form>标记

时间:2008-12-21 11:18:30

标签: asp.net webforms

它不会删除第二个表单标记内的所有内容,只是隐藏页面中的和标记

任何想法和解决方法?

5 个答案:

答案 0 :(得分:5)

html中不允许嵌套表单。所以你不能在服务器表单中添加另一个表单。

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您无法嵌套表单标记。如果你想要更多地控制标记或者考虑不使用asp.net服务器控件,可以转到asp.net mvc,这样你就可以包含多个表单标签,而不必确保控件在带有runat服务器属性的表单标签内但是然后你不会在后面的代码中获得细粒度访问,并且必须开始使用request.form colelction来检索回发值。

答案 3 :(得分:0)

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

那就是你可以从Code-Behind修改元素(myTextbox.Text = 'Hello';)的属性。

答案 4 :(得分:0)

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

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

通过在您的自定义表单上方添加一个单独的结束 </form> 标记:WebForms 将在您的自定义表单开始之前关闭它的包装表单标记,以便您没有嵌套的表单块。