我正在创建一个ASP.NET MVC解决方案,而我内部有2个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文件,图像等位置?
答案 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。它是关于将视图存储在数据库中,但它应该让您了解从哪里开始。