为什么你不能有一个包含多个服务器端Form标签的页面?

EBA*_*BAG 2 forms asp.net

我想知道为什么asp.net不允许这样做?Lot的页面包含多于1个表单,登录 - 注册表单,搜索 - 其他表单等...

所以我的猜测是我可以将一个表单与精细的oop asp.net对象相关联,而其他表单与简单的html相关联,我必须以两种完全独立的方式处理来自这些来自的响应.是对的吗?

请解释这里发生了什么,以及为什么asp.net不允许这样做

Ode*_*ded 5

ASP.NET webforms依赖于单一服务器端表单.

您可以根据需要添加任意数量的客户端表单(无runat="server"属性).


这是因为尝试使用类似桌面的开发模型进行Web开发.

有关更多原因,请参阅 MSDN杂志文章:

单一表单模型是实现ASP.NET状态维护功能的关键元素.由于页面始终发布到自身,因此运行时可以轻松检索并恢复上次访问期间保存的状态.虽然还有其他方法可以保存和恢复页面状态,但使用单一表单模型是目前所有解决方案中最简单,最有效的方法.

一般来说,放弃多种形式并不是一个很大的牺牲.多种形式有时很有用,但可能不像您想象的那么频繁.例如,在大量页面中实现基于表单的功能(例如,在搜索和登录对话框中)时,您会发现使用多个表单很有帮助的场景.我将在后面的专栏中回到这一点.不过,在进一步讨论之前,需要对HtmlForm类进行一次检查.


注意:

ASP.NET-MVC没有这样的限制 - 你可以拥有任意数量的表单.