如何在ASP.NET MVC中的不同项目中引用主视图?

时间:2009-07-24 19:14:56

标签: c# .net asp.net-mvc

我正在创建一个ASP.NET MVC解决方案,而我内部有2个MVC网站项目。

我有兴趣创建一个名为“共享”的第三个项目,我可以在其中引用两个站点之间的共享视图/内容,因此我只有一个地方可以编辑它们。

  • WebUI.Site1(ASP.NET MVC站点)
  • WebUI.Site2(ASP.NET MVC站点)
  • WebUI.Shared(新创建的ASP.NET MVC站点)

如果Masterview位于不同的项目中,如何引用Masterview的位置?

所以,通常在视图的顶部我会像这样引用一个Masterview:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %>

然而,

现在,“Tabbed.Master”不在本地项目中,它位于解决方案中的差异项目中。我已经创建了对项目的引用,但我不知道如何从WebUI.Site1引用Tabbed.Master到WebUI.Shared?

类似的东西:

<%@ Page Title="" Language="C#" MasterPageFile="WebUI.Shared.Views.Tabbed.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.ViewModels.Admin.EditProfileViewModel>" %>

不起作用。

如何在像这样的项目中引用masterview,css文件,图像等位置?

3 个答案:

答案 0 :(得分:1)

由于MasterView的性质,您需要找到基于文件的解决方案。虚拟路径是一种方法,但我认为你会遇到麻烦:当你使用内部Visual Studio Web服务器时,如何处理文件引用?

并想一想在IIS中缺少此虚拟路径时所遭受的痛苦。

Visual Studio允许您链接到其他项目的文件。这些文件将在编译时复制:

  

右键单击解决方案资源管理器 - &gt;添加现有项目... - &gt;选择文件 - &gt;添加为链接

就个人而言,我并不关心这个功能。但它似乎做你需要的。

答案 1 :(得分:0)

假设母版页位于WebUI.Shared Root/Views/SharedPage.Master

尝试在指向WebUI.Site1的{​​{1}}和WebUI.Site2下创建虚拟目录:

WebUI.Shared

WebUI.Site1/Shared => WebUI.Shared Root WebUI.Site2/Shared => WebUI.Shared Root WebUI.Site1内使用以下路径访问母网页:WebUI.Site2

我认为IDE无法跟踪引用,但它应该可以在服务器上运行。

编辑: WebUI.Site1和WebUI.Site2可能需要WebUI.Shared上的引用。

答案 2 :(得分:0)

如果您想使用与项目的View文件夹不同的位置来存储您的视图,则需要创建自定义ViewEngine

prototype看看这个Phil Haack。它是关于将视图存储在数据库中,但它应该让您了解从哪里开始。