我加入MVC到具有很多传统的网络表单页面的项目。这工作得很好。不过,我现在对MVC并为web表单一个单独的母版。两个主页产生基本上相同的输出。我真的很想杀了一个web表单,只是使用MVC母版页与我的所有网页,并保持干燥。

由于不是DRY已经咬伤了我几次,当我忘了更改两个。

我想这样做的明显的方式,只是指着MVC母版网页表单内容页的母版属性。这将引发一个错误,说的MVC主人只与MVC视图的工作。

这似乎将是混合MVC和网络表单项目一个很常见的问题。我的MVC主人是不是做与ViewData的东西,所以我看不出有任何理由的web表单无法使用它们。

有帮助吗?

解决方案

您可以完全共享相同的母版页。你的MVC母版页必须简单地指向的WebForms通过它的MasterPageFile属性母版。这适用于你的WebForms母版风格,以你的MVC母版。

我在生产中使用这种设置。

这是我的MVC母版页的声明,在Web窗体指向母版页:

<%@ Master Language="C#" MasterPageFile="~/MasterPage/Site.Master"
AutoEventWireup="true" Inherits="System.Web.Mvc.ViewMasterPage" %>

就像一个魅力。

其他提示

博客帖子引导您完成必要的步骤来分享Web窗体和MVC母版页很少或根本没有重复。它还包括你可以下载一个示例项目,我发现它非常有用。

一个打嗝我跑进是,我是用我的报头中的LoginStatus控件。 LoginStatus必须是一个形式里面,所以我不能在我的根母版页使用它(不想与我的所有MVC页面嵌套形式结束)。但是,这是一个非常简单的控制,在我的根主页一个简单的代码块来代替。

在我的web表单的应用程序,我的母版页从“HLPUSD.SMART.SMARTMaster”这仅仅是我们的应用程序和命名空间,则Web窗体类的名称。

继承

在我的MVC项目,母版页从 “System.Web.Mvc.ViewMasterPage”

继承

我认为这有什么关系呢?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top