此外,为了具体到ASP.NET – 为什么所有的服务器控件放置在< form>标签?为什么不把它们放在别的地方?
加,
我注意到,在.aspx文件中,< form>标签具有runat = server属性,而一个正常的服务器控件如Button也有一个。所以看起来< form>也是一个服务器控件。但奇怪的是,我找不到它在Visual Studio工具箱。
它确实是一个shortcoming的WebForms。在ASP.NET MVC中,您可以实现任意多种形式(并且它是网页的有效和正确的行为)。
所有服务器控件都放置在< form>标签是允许WebForms引擎识别它们,加载它们的值&从/向ViewState保存它们的值。 WebForms中几乎所有的控制管理基础设施都是基于这样的想法:标签包含从代码隐藏中访问的所有内容。