32

我正在将 MVC 添加到具有许多旧版 Web 表单页面的项目中。这工作正常。但是,我目前有一个单独的 MVC 和 web 表单的母版页。两个母版页产生基本相同的输出。我真的很想杀死网络表单,只使用 MVC 母版页和我的所有页面并保持干燥。

当我忘记改变两者时,不干燥已经咬了我几次。

我尝试采用明显的方式,并将 Web 表单内容页面的 MasterPage 属性指向 MVC 母版页。这会引发一个错误,指出 MVC 主控仅适用于 MVC 视图。

这似乎是混合 MVC 和 webform 项目的一个非常常见的问题。我的 MVC 大师没有对 ViewData 做任何事情,所以我看不出 webforms 不能使用它们的任何原因。

4

3 回答 3

27

您绝对可以共享同一个母版页。您的 MVC 母版页必须通过其 MasterPageFile 属性简单地指向 WebForms 母版页。这会将您的 WebForms MasterPage 样式应用于您的 MVC MasterPage。

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

我的 MVC 母版页上的声明,指向 Web 表单母版页:

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

奇迹般有效。

于 2009-05-08T19:33:41.143 回答
8

这篇文将引导您完成共享 WebForm 和 MVC 母版页的必要步骤,而很少或没有重复。它还包括一个可以下载的示例项目,我发现它很有帮助。

我遇到的一个问题是我在标题中使用了 LoginStatus 控件。LoginStatus 必须在表单内,因此我无法在我的根母版页中使用它(不想在我的所有 MVC 页面上出现嵌套表单)。但这是一个非常容易控制的控件,可以在我的根母版页中用一个简单的代码块替换。

于 2010-05-11T21:08:26.117 回答
0

在我的 webforms 应用程序中,我的母版页继承自“HLPUSD.SMART.SMARTMaster”,它只是我们应用程序的命名空间,然后是 webform 类的名称。

在我的 MVC 项目中,母版页继承自“System.Web.Mvc.ViewMasterPage”

我觉得这有关系吗?

于 2009-05-08T19:40:56.463 回答