虽然一个创建的aspx页面,Visual Studio会自动加上一个带runat="server"的Form窗体,但是这个窗体并不是必须的。那么什么时候需要它,什么时候不需要呢?

从MSDN的《ASP.NET 网页语法概述 》中,我们知道:

如果页面包含允许用户与页面交互并提交该页面的控件,则该页面必须包含一个 form 元素。可以使用标准 HTML form 元素,但要适用某些规则。使用 form 元素的规则如下:

  • 页面只能包含一个 form 元素。

  • form 元素必须包含 runat 属性,其属性值设置为 server。此属性允许您在服务器代码中以编程方式引用页面上的窗体和控件。

  • 可执行回发的服务器控件必须位于 form 元素之内。

  • 开始标记不得包含 action 属性。ASP.NET 可在处理页面时动态设置这些属性,重写您所做的任何设置。

显然,如果是我们的页面中包含了允许用户和页面交互并提交该页面的控件(简单地,可以理解为可以写事件的控件),我们就必须将这些控件放置到带有runat="server"的Form窗体中。

反之,如果我们只是用了Literal等无事件的控件,或者Html控件,我们可以将带有runat="server"的Form窗体去掉,同时,ViewState也就自动被清除了。

因此,在使用aspx页面的时候,一定要清楚使用的环境,要求以便采取适当的控件和处理方式。