我们有一个大型遗留应用程序,我们希望开始使用 MVC 来实现新功能。
为此,我们添加了自定义路由,例如:
routes.IgnoreRoute( "{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" } );
我们希望在旧的 WebForms 和新的 MVC 页面之间共享母版页。
这看起来很简单 - 将 master 更改为从 ViewMasterPage
继承并且它也可以用作 MVC 页面的母版。
问题是 HTML <form>
.
母版页有 <form>
顶部有 3 个标签,里面有 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
在 View 内拥有表单。 helper 。 HTML 不允许嵌套表单。 MVC 模式需要 View 回发到不同的操作(例如“详细信息” View 可能回发到“编辑”操作)。
有人知道解决这个问题的好方法吗?
最佳答案
我们在 Web 表单和 MVC 之间共享一个母版页,该母版页没有 <form>
。您可以为 Web 表单创建一个中间母版页,该母版页又使用您的根母版页,但添加 <form>
。母版页的层次结构对于这些构造非常有用。
关于asp.net - MVC 和 WebForms 之间共享大师 - 处理 <form>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031252/