ASP.NET不提供多个服务器端表单

时间:2013-04-02 23:10:34

标签: asp.net

ASP.NET背后的理念是什么,不允许使用标记runat=server制作多个表单...

1 个答案:

答案 0 :(得分:2)

Web表单是为了更好或更糟糕的概念而构建的,旨在抽象底层平台。服务器控件,服务器事件,ViewState和UpdatePanel都是这种方法的例子。

多个表单并非不可能,但对于将服务器控件添加到他/她的页面并希望它们“正常工作”的新手开发人员来说,这将是不直观的。对于一个经验丰富的开发人员来说,它会很不错,但它会引入一组新的警告(而且Web Forms有许多细微差别和警告)。

例如,假设我添加了一个GridView来形成A,一个DropDownList来形成B.下拉触发一个回发,但只有表单B中的数据被发布到服务器(这就是表单的工作方式;一次只发布一个表单。)

但是,GridView现在缺少其所有的ViewState,它包含在表单A中。页面现已完全破坏。

Ad hoc ViewState值更加棘手。开发人员可以将他们想要的任何内容放入ViewState作为名称/值对。服务器应该如何决定哪个表单获取ViewState?如果它进入所有表单,那就是页面膨胀。

<强>摘要

  • 这在技术上不可能,但问题可能会超过好处。
  • 有一些方法可以将第二个<form>添加到ASPX页面(虽然它可能无法在服务器上运行)。
  • 页面上的多个表单绝对没有错。这是使用平台而不是打击/抽象它的许多优点之一,例如ASP.Net MVC试图这样做。