繁体   English   中英

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

[英]How can I reference a Master view in a different project in ASP.NET MVC?

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

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

  • 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文件,图像等位置?

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

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

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

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

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

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

尝试在指向WebUI.Shared WebUI.Site1WebUI.Site2下创建虚拟目录:

WebUI.Site1/Shared => WebUI.Shared Root
WebUI.Site2/Shared => WebUI.Shared Root

WebUI.Site1WebUI.Site2使用以下路径访问WebUI.Site2~/Shared/Views/SharedPage.Master

我不认为IDE将能够跟踪引用,但它应该在服务器上工作。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM