【问题标题】:why the form element generated in each .aspx page?为什么在每个.aspx 页面中生成表单元素?
【发布时间】:2011-03-25 14:18:47
【问题描述】:

我是asp.net的新手,我必须使用asp.net来启动我们的应用程序,并且我使用的是visial studio,我只是发现每次创建新页面时都会出现类似的内容:

<body>
  <form runat="server">
   the content of my page
  </form>
</body>

我只是不知道为什么每个页面都存在表单元素,其中一些根本不需要表单,因为我不尝试使用表单向服务器端提交内容。

为什么?

【问题讨论】:

标签: .net asp.net webforms


【解决方案1】:

ASP.Net 要求所有服务器控件都嵌套在表单控件中。这是因为 ASP.net 将其状态信息存储在一个名为 ViewState 的隐藏控件中。您在页面上拥有的任何服务器控件都将使用ViewState 来保持其状态。另外,您应该知道,您的页面上可能只有一个表单。

如果您需要两个单独的“表单”,您通常会将每个表单放在一个 Panel 控件中,并在其元素上设置DefaultButton 属性和ValidationGroup 属性,以便将其与其他“表单”隔离开。”

请查看ASP.NET Web Forms from W3Schools了解更多信息。

【讨论】:

  • +1,很好的总结,加上关于如何解决框架限制的很好的提示。
【解决方案2】:

最初的 ASP.Net (Webforms) 框架对您的工作方式做了一些假设。其中一些现在可能很烦人,这取决于您喜欢如何工作。

  • 大多数 .Net 控件都需要一个表单。
  • ViewState 需要一个表单,并且只有一个表单。
  • 回发模型需要一个表单,并且一个表单。

如果没有表单,大多数 asp.net 功能将无法工作。因此,默认情况下没有表单会导致很多问题,尤其是对于初学者。几乎每个页面上的第一步都是拖过您的“表单容器控件”或其他任何名称,人们总是会弄错。鉴于他们的计划,始终存在的一种形式是有意义的。

本讨论假设 Webforms,“默认”ASP.NET Web 框架。在 ASP.Net MVC 中,没有自动表单元素。许多像这样的假设被替换为其他假设,我们中的许多人现在更喜欢这些假设。

【讨论】:

  • 当您想在页面中有多个单独的表单时,整个页面的表单会伤害到很多。我已经看到足够多的人因此而诅咒 Web 表单,以至于永远不想靠近它。
  • @David 听起来你和其他人会更喜欢 ASP.NET MVC,我也是。我上面解释的是这种单一表单作为 WebForms 一部分的必要性。和你一样,我更喜欢更多的控制、更多的 ajax,以及对我想要如何工作的更少的假设。
  • @David,实际上听起来你只是做错了。请参阅我的回答,其中我解释了您应该如何处理页面中的多个逻辑表单。
猜你喜欢
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多