我们有一个大型遗留应用程序,我们希望开始使用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模式需要视图回发到不同的操作(例如“详细信息”视图可能会回发到“编辑”操作)。
有没有人知道这方面的好方法?
答案 0 :(得分:8)
我们在Web表单和MVC之间共享一个没有<form>
的母版页。您可以为Web表单创建一个中间母版页,然后使用您的根母版页,但添加<form>
。母版页的层次结构对于这些构造非常有用。