是否有可能共享MVC和Web表单之间的主网页?
-
20-08-2019 - |
题
我加入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”
继承我认为这有什么关系呢?