asp.net - MVC 和 WebForms 之间共享大师 - 处理 <form>

标签 asp.net asp.net-mvc webforms

我们有一个大型遗留应用程序,我们希望开始使用 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/

相关文章:

asp.net-mvc - MVC 4 忽略 DefaultModelBinder.ResourceClassKey

asp.net - Stream.WriteAsync 抛出远程主机关闭连接异常

c# - ASP :calendar automatically select Sunday

c# - 如果未呈现按钮,客户端能否以编程方式获取按钮单击事件?

asp.net-mvc - 使用WEB API时,如何从POST的HttpResponseMessage中提取内容?

.net - 将 HTML 渲染为 TIFF

asp.net - 405 不允许方法 PUT

javascript - ASP.NET 更改页面时更改 session 值

javascript - 在 Asp.Net 中拖放 2 个列表框

c# - 如何通过 HttpContext.Current.Request.Form 知道在 HTML 页面中选中了哪些复选框?