Asp.net mvc 如何跨多个Asp.net MVC应用程序使用通用布局和样式

Asp.net mvc 如何跨多个Asp.net MVC应用程序使用通用布局和样式,asp.net-mvc,layout,razor,asp.net-mvc-4,telerik-mvc,Asp.net Mvc,Layout,Razor,Asp.net Mvc 4,Telerik Mvc,我有一个VisualStudio解决方案,其中有多个telerik MVC4 razor项目具有相同的外观和感觉。我不想在所有MVC4项目中复制相同的布局、CSS/样式、图像和js文件。实现这种可重用性的最佳方法是什么?我尝试创建一个commonUI项目的虚拟目录,并尝试使用。。。在_ViewStart.cshtml中,但它抱怨说“http:/localhost/MyMvcApp/Views/Shared/_Layout.cshtml”不是有效的虚拟路径 请帮忙 四项建议: 1) 看看这些领域,

我有一个VisualStudio解决方案,其中有多个telerik MVC4 razor项目具有相同的外观和感觉。我不想在所有MVC4项目中复制相同的布局、CSS/样式、图像和js文件。实现这种可重用性的最佳方法是什么?我尝试创建一个commonUI项目的虚拟目录,并尝试使用。。。在_ViewStart.cshtml中,但它抱怨说“http:/localhost/MyMvcApp/Views/Shared/_Layout.cshtml”不是有效的虚拟路径

请帮忙

四项建议:

1) 看看这些领域,也许不是单独的项目,而是同一个系统的不同组件(管理等)

2) 在visual studio中使用“添加现有项”,并通过链接添加项。这仍然会在部署时复制它们,但您可以保留一个源

3)考虑通过建立自己的NuGET包来实现这一点。这样,尽管您会复制CSS和图像,但您会将其打包,并根据需要更新包。这样做的好处是,您可以更新一个项目,而不必重新测试另一个项目(如果它们是单独的,并且1不适用)

4) 我发现这一个比其他的更难看,但在IIS中,我相信您可以映射到文件夹中,因此您可以通过项目中的链接引用这些文件,而不是将它们部署到那里,然后在部署时使用单个源路径映射到适当的文件夹中

我不知道如何共享应用程序路径

编辑: 我以前从未尝试过这个,所以不能保证它能工作,但可能在一个单独的项目中编译您的共享项,然后在所有其他项目中引用DLL

我找到的参考文献是这样的,但我还没有确认这是否有效,只是认为这可能是一条可行的探索之路:


区域不好,因为您无法单独部署它们。与您一样,我尝试使用虚拟目录,并成功地使用相对语法引用布局:

@{
    Layout = "~/Common/Layouts/Layout-001.cshtml";
}
上面,项目的布局继承根目录下/common/virtual目录中的布局。随着公共布局(及其引导和jquery版本)的发展,您可以使用命名为物理文件夹的并行版本(如common.v01、common.v02等)。因此,您可以通过将VD的路径更改为适当的版本,将应用程序升级到较新的通用布局


这样做的缺点是,您需要使用IIS(而不是express)作为开发和测试平台

我不能使用这些区域,因为我的web项目实际上是3个不同的项目,而不是组件(管理等),它们只是共享公共实体和数据库。它们旨在供不同的用户组使用。2) 正如你提到的,在部署时仍然重复它们。我将不得不进一步研究选项3和4。不管怎样,谢谢。阿米特,我现在没有时间尝试这个,但是如果你对如何让它发挥作用有强烈的想法,也许可以试试我的编辑方法谢谢米尔科。我明天就试试看。最近忙着做其他事情。我知道通常我喜欢在发布之前确认事情,但这不是一件很快就能检查的事情,所以我很懒,只发送了一个指针:)