我正在构建一个混合的MVC / Webforms应用程序,其中我的MVC视图使用的是asp.net webforms 2 MasterPage。在我决定在MVC视图中添加表单之前,一切都运行良好。由于ASP.NET Webforms将整个页面包装在表单元素中,并且您不能在表单中包含表单,因此我有点卡住了。
主页面中有大量遗留控件依赖于回发,所以我不能只禁用它。我现在想到的是,依赖于aspnetForm表单的所有控件都在MVC页面之上,所以想知道是否有控制asp.net何时关闭aspnetForm表单标签?或者有没有人对我如何解决这个问题有任何其他想法?
答案 0 :(得分: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迁移出来。
答案 1 :(得分:0)
您shouldn't have a problem,您可以控制表单标记在母网页中的位置。您是说在将其用于MVC时需要提前关闭母版页的表单标记,并将其保留在WebForms的位置?您可能需要弄乱控制树,当我在使用两个主人之前完成此操作时,尽管您可以通过抽象共同base.master
来逃避,然后mvc.master
和webforms.master