2009-06-23 81 views
10

我们有一个很大的遗留应用程序,我们希望开始使用MVC来实现新功能。在MVC和WebForms之间共享主 - 处理<form>

要做到这一点,我们添加自定义路由,例如:

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模式需要将视图发回不同的动作(例如,“细节”视图可能会回发到“编辑”动作)。

有没有人知道解决这个问题的好方法?

+0

我知道这个相关的问题:http://stackoverflow.com/questions/841418这里我特别关注表单标签的问题 – Keith 2009-06-23 08:13:07

回答

8

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

+0

这基本上是我到底做了什么 - 有一个共同点.master与一些布局,然后MVC.master和WebForms.master – Keith 2009-06-26 10:47:03