asp.net - 在 ASP.Net 应用程序中使用多个表单标签时会发生什么?
问题描述
在 Web 应用程序中使用多个表单标签时会发生什么?
我在母版页中使用表单标签,在子页中使用 alos。但它显示错误。
解决方案
在 Web 应用程序中使用多个表单标签时会发生什么?
您可以<form>
在页面中使用任意数量的元素(尽管它们不能嵌套)。但是,正如您所注意到的,每个组合实例中只能有一个<form runat="server">
元素 Page
.master
(即当前页面周围所有组合页面的控件布局.aspx
以及任何子实例Control
或.ascx
UserControl 实例)。
这是因为 ASP.NET WebForms 是围绕每个用户的操作(按钮单击、<select>
选择更改、单选按钮单击等)将触发“整个页面回发”的假设构建的,该操作将重新加载整个页面一个POST
响应,它(与 结合__VIEWSTATE
)会将类似于 VB6 桌面表单的模型带到网络上。
...但这要追溯到 2001 年 ASP.NET WebForms 发布时,从那时起,每个人都意识到 WebForms 的“回发”模型是一个巨大的错误,并且确实破坏了网络(因为它破坏了后退按钮,它破坏了刷新按钮,它打破了 HTTP 方法的语义,它将 Web 从一个可扩展的无状态系统转变为一个可怕的有状态系统,除了稍微浅一点的初始学习曲线外,对任何人都没有真正的好处从未离开过 Visual Basic 舒适区的软件开发人员)。
简而言之:停止使用 ASP.NET WebForms 并尽快迁移到 ASP.NET MVC。
推荐阅读
- c# - C# .NET 从外部文件运行代码
- java - 我有几个活动要使用标签串在一起
- mysql - 当我尝试使用 FOR UPDATE NOWAIT 时,MariaDB 抛出错误
- ansible - 如何在ansible中将dict格式化为字符串
- laravel - Laravel Eloquent 访问器:通过请求参数修改值
- python-3.x - 带有 Python 看门狗的远程服务器上的文件系统监视器
- regex - 这两个正则表达式有什么区别?
- arrays - 将对象数组转换为累积字典 Swift
- kubernetes - 如何在 kube-scheduler 中显示调度策略
- r - 为什么在 R 中执行 fix() 后该函数起作用