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

时间:2012-05-02 21:47:23

标签: asp.net-mvc layout razor asp.net-mvc-4 telerik-mvc

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

请帮忙!

2 个答案:

答案 0 :(得分:10)

四项建议:

1)研究区域,也许不是单独的项目,而是同一系统的真正不同的组件(管理员等)?

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

3)考虑通过构建自己的nuget包来做到这一点。这样,虽然您可以复制CSS和图像,但您可以将其打包并根据需要更新软件包。好处是你可以更新一个项目,而不必重新测试另一个项目(如果它们是分开的,1)不适用。

4)我觉得这个比其他人更丑,但在IIS中我相信你可以在文件夹中映射,所以你可以通过项目中的链接引用这些文件,而不是在那里部署它们然后映射到相应的文件夹中使用单个源路径的部署时间。

我知道无法分享应用程序路径。

编辑:

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

我发现的参考文献是这样的,但我再次证实这不行,只是认为这可能是一条可行的探索途径:

http://www.chrisvandesteeg.nl/2010/11/22/embedding-pre-compiled-razor-views-in-your-dll/

答案 1 :(得分:0)

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

https://spreadsheets.google.com/feeds/list/{spreadsheet ID}/1/public/values?alt=json

以上,项目的布局继承了根目录/ common /虚拟目录中的布局。随着公用布局(及其引导程序和jquery版本)的发展,您可以使用以并行版本命名的物理文件夹(例如common.v01,common.v02等)。因此,您可以通过将VD的路径更改为适当的版本,将应用程序升级到更新的通用布局。

这样做的缺点是您需要使用IIS(非表达)作为开发和测试平台。