在MVC和WebForms之间共享一个master - 处理<form>

Kei*_*ith 10 asp.net asp.net-mvc webforms

我们有一个大型遗留应用程序,我们希望开始使用MVC来实现新功能.

为此,我们添加了自定义路由,例如:

routes.IgnoreRoute( "{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" } );
Run Code Online (Sandbox Code Playgroud)

我们希望在旧的WebForms和新的MVC页面之间共享母版页.

这看起来很简单 - 改变了master继承ViewMasterPage而且它也可以用作MVC页面的master.

问题是HTML <form>.

主页面<form>顶部有一个标签,里面有3个内容面板,这就是WebForms喜欢它的方式.该Page控制将代替师傅的形式在页面指向回来了,这似乎是一个硬编码的行为.

所有三个内容面板都有WebForms控件,因此页面级别<form>标签需要在它们之外才能覆盖所有三个.像这样的东西:

<form id="form1" runat="server">
    ...
    <asp:contentplaceholder id="content1" runat="server" />
    ...
    <asp:contentplaceholder id="content2" runat="server" />
    ... //etc
</form>
Run Code Online (Sandbox Code Playgroud)

但是,对于MVC,我们希望使用Html.BeginForm帮助程序在视图中包含表单.HTML不允许您嵌套表单.MVC模式需要视图回发到不同的操作(例如,"详细信息"视图可能会回发到"编辑"操作).

有没有人知道这方面的好方法?

chr*_*166 8

我们在Web表单和MVC之间共享一个没有的表单<form>.您可以为Web表单创建一个中间母版页,然后使用您的根母版页,但添加了<form>.母版页的层次结构对于这些构造非常有用.