到目前为止,我遇到的所有网页最多包含一个<form>标签.为什么不是多个呢?我想不出为什么多个表单不能在同一个网页中共存.

另外,具体到ASP.NET-为什么所有服务器控件都放在<form>标签内?为什么不把它们放在别的地方呢?

我注意到,在.aspx文件中,<form>标记有runat=server属性,而普通服务器控件(如Button)也有一个属性.所以<form>似乎也是server control.但奇怪的是,我在Visual Studio工具箱中找不到它.

推荐答案

可以有多种形式,with hacks.

这确实是一个shortcoming个网络表单.在ASP.NETMVC可以实现任意多个表单(这是网页的有效和正确行为).

所有服务器控件都放在<form>标签中的原因是允许WebForms引擎识别它们,加载它们的值&;将其值从/保存到ViewState.WebForms中几乎所有的控制管理基础设施都基于这样一种理念,即标记包含从代码背后访问的所有内容.

Asp.net相关问答推荐

分层架构中的 ASP.NET 和实体框架 - 仅将实体框架用于 ORM

在每个对象上设置 ClientIDMode = Static 是否有任何缺点(在母版页的 maincontent 上设置)

Web API 自托管 - 在所有网络接口上绑定

在 ASP.Net 中使用 Page_Load 和 Page_PreRender

任何人都有解决 Internet Explorer 上剩余 n 项问题的 idea 吗?

捕获对 ASP.NET ASMX Web 服务的 SOAP 请求

在 RedirectToAction 调用中传播 QueryString 参数

如何以编程方式获取会话 cookie 名称?

__doPostBack 未定义

N' 在 SQL 脚本中代表什么? (插入脚本中字符之前使用的那个)

GridView 与嵌套类的属性绑定

判断邮箱地址是否对 System.Net.Mail.MailAddress 有效

使用 jQuery 调用 ASP.NET PageMethod/WebMethod - 返回整个页面

如何将参数传递给 ASP.NET MVC 2 中的自定义 ActionFilter?

使 WCF Web 服务与 GET 请求一起工作

回发后运行javascript函数

连接字符串正确时出现实例失败错误

在.net的内存数据库中

您的下一个 ASP.NET 项目的 Select 是什么:Web 窗体还是 MVC?

在没有等待 #2 的情况下调用异步方法