日期:2014-05-20  浏览次数:20370 次

讨论一下ASP.NET窗体多个form的问题
为什么ASP.NET窗体必须有runat= "server "的form——这个我知道的,因为要成为runat=server控件的容器
那为什么只能有一个form?谁能解答一下?

另一个问题是:asp.net啥时候能支持一个窗体多个runat=server的form?

现在只能用第三方控件实现……

------解决方案--------------------
作为服务器端的form是只有一个,但是可以在程序中构建多个form的
------解决方案--------------------
你的解决方案是对的,就是通过脚本实现.
------解决方案--------------------
因为任何一个 <form> 提交时,都仅仅提交其内部数据,这是HTML和HTTP所规定了的。ASP.NET的Web Form概念导致一个Web Form必须整体维护,特别是ViewState这样的,如果部分提交将无法保持。

这就是Web Form的概念,通过一个简洁的通俗易懂的设计,来吸引尽可能多的开发人员到ASP.NET 1.0的平台上来,自然有所牺牲,例如楼主这种情况。不过既然这种牺牲是能够通过JavaScript来不足的,也就没所谓了。事实上你可以通过JavaScript解决这个问题,当当前focus在不同元素上时,对用户输入的响应略有不同,而不允许浏览器默认响应。
------解决方案--------------------
一个页面只能有一个form runat=server
这个就像老楼上所说的 是asp.net的机制所 规定的

当然楼主 可以用asp的方式 不用添加非runat=server的form
用js脚本控制提交..
要不还可以用iframe包含你的每个form页面
------解决方案--------------------
个人觉得一般是用不上的,楼主的需求用javascript可以解决的,如果放多个form在一个page上的话反而更麻烦,
------解决方案--------------------
前几天面试时候还问到了这个问题,返回到服务器维持用户状态必须整体维护,所以不能部分提交,我想楼主想通过部分的数据提交到服务器上来减轻服务器和数据流量的压力吧,那样用html中的form就行了啊。

至于第二个问题,我想是不是需要浏览器出来维护用户数据的统一性。