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

时间:2009-06-23 08:09:28

标签: asp.net asp.net-mvc webforms

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

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

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

我们希望在旧的WebForms和新的MVC页面之间共享主页。

这看起来很简单 - 将主服务器更改为继承自ViewMasterPage,并且它也可以用作MVC页面的主服务器。

问题是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>

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

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

1 个答案:

答案 0 :(得分:8)

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