【问题标题】:Sharing a master between MVC and WebForms - dealing with the <form>在 MVC 和 WebForms 之间共享一个 master - 处理 <form>
【发布时间】:2010-11-05 02:23:13
【问题描述】:

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

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

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

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

这看起来很简单 - 将 master 更改为从 ViewMasterPage 继承,它也可以用作 MVC 页面的 master。

问题在于 HTML &lt;form&gt;

母版页顶部有一个&lt;form&gt; 标记,内部有3 个内容面板,这就是WebForms 喜欢的方式。 Page 控件覆盖主窗体以指向页面,这似乎是硬编码行为。

所有三个内容面板都有 WebForms 控件,因此页面级别的&lt;form&gt; 标记需要在它们之外才能覆盖所有三个。像这样的:

<form id="form1" runat="server">
    ...
    <asp:contentplaceholder id="content1" runat="server" />
    ...
    <asp:contentplaceholder id="content2" runat="server" />
    ... //etc
</form>

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

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

【问题讨论】:

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


【解决方案1】:

我们在 Web 表单和 MVC 之间共享一个母版页,它没有 &lt;form&gt;。您可以为 Web 表单创建中间母版页,该母版页反过来使用您的根母版页,但添加 &lt;form&gt;。母版页的层次结构对于这些结构非常有用。

【讨论】:

  • 这基本上就是我最后所做的——有一个带有一些布局的 common.master,然后是一个 MVC.master 和一个 WebForms.master
  • 你有什么我能看到的例子吗?我想我的一切都好起来了。
猜你喜欢
  • 2010-10-24
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 2011-02-16
  • 2011-04-22
  • 2012-01-15
  • 2014-02-26
  • 2011-10-13
相关资源
最近更新 更多