我有有相同的外观和感觉多Telerik的MVC4剃刀项目的Visual Studio解决方案。 我不希望有相同的布局,CSS /样式,图像和所有MVC4项目复制js文件。 什么是做到这一点的可重用性的最佳方式是什么? 我试图创建一个commonUI项目的虚拟目录,并试图引用_layout.cshtml使用的http://本地主机/ ......在_ViewStart.cshtml却抱怨说:“HTTP:/localhost/MyMvcApp/Views/Shared/_Layout.cshtml “是不是有效的虚拟路径“。
请帮忙!
四点建议:
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/
区域是不好的,因为你无法将它们单独部署。 和你一样,我尝试使用虚拟目录,并成功指的是使用相对语法布局:
@{
Layout = "~/Common/Layouts/Layout-001.cshtml";
}
以上,项目的布局继承了在根/普通/虚拟目录的布局。 作为公共布局(连同它的引导和jQuery的版本)的发展,你可以使用并排端版本命名物理文件夹(如common.v01,common.v02)。 所以,你可以通过切换到相应的版本的VD的路径您的应用程序升级到较新的通用布局。
这样做的缺点是,你需要使用IIS(未表示)作为开发和测试平台。
文章来源: How to use common Layout and styles across multiple Asp.net MVC applications