【问题标题】:Issues with aspnetForm in hybrid asp.net webforms/mvc app混合 asp.net webforms/mvc 应用程序中的 aspnetForm 问题
【发布时间】:2010-10-04 09:57:59
【问题描述】:
我正在构建一个混合 MVC/Webforms 应用程序,其中我的 MVC 视图使用 asp.net webforms 2 MasterPage。在我决定在我的 MVC 视图中放置一个表单之前,一切都运行良好。由于 ASP.NET Webforms 将整个页面包装在一个表单元素中,并且您不能在表单中包含一个表单,所以我有点卡住了。
母版页中有大量依赖回发的旧控件,因此我不能只禁用它。我目前的想法是所有依赖于 aspnetForm 表单的控件都在 MVC 页面的上方,所以想知道是否有任何方法可以控制 asp.net 何时关闭 aspnetForm 表单标签?或者有没有人对我如何解决这个问题有任何其他想法?
【问题讨论】:
标签:
asp.net
asp.net-mvc
asp.net-mvc-2
webforms
【解决方案1】:
我以前来过这里,但最终却为单独的母版页而烦恼:
也许您没有仔细观察,但您确实可以控制该表单在整个容器周围的位置和方式
[编辑]:更完整的例子:
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="LegacyContentHolder" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
<asp:ContentPlaceHolder ID="MvcContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
</body>
您当然可以将其移动到 Webforms 内容的适当占位符周围,而将其他占位符留在它的范围之外?
如果在页面上使用,这会生成以下标记
<body>
<form name="aspnetForm" method="post" action="Test.aspx" id="aspnetForm">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNDMyNDU0NjAzZGT01Ocz+ON8w56SI8x7nj2/h8B/4g==" />
</div>
<div>
Web forms behaviour has been generated here, boo
</div>
</form>
MVC content has been generated here, yay
</body>
[编辑]
注意:我现在检查了我们的代码,不得不返回几个版本 - 我们也做了三个母版页,一个用于上述骨架,一个包含特定的 ASP.NET Webforms 内容,还有一个继承自 MVC 的东西。
保持一些干净,并准备在未来将其从 Webforms 中迁移出来。
【解决方案2】:
shouldn't have a problem,您可以控制表单标签在母版页中的位置。您是说在将母版页用于 MVC 时需要提前关闭母版页的表单标签,然后将其留在原处用于 WebForms?
您可能需要弄乱控制树,当我在使用两个主控器之前完成此操作时,尽管您可能能够通过抽象一个常见的base.master 而侥幸逃脱,然后拥有@987654323 @和webforms.master