7

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

请帮忙!

4

2 回答 2

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/

于 2012-05-04T16:16:06.187 回答
0

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

@{
    Layout = "~/Common/Layouts/Layout-001.cshtml";
}

上面,项目的布局继承了根目录下 /common/ 虚拟目录中的布局。随着通用布局(连同它的 bootstrap 和 jquery 版本)的发展,您可以使用并排版本命名的物理文件夹(如 common.v01、common.v02)。因此,您可以通过将 VD 的路径更改为适当的版本来将您的应用程序升级到更新的通用布局。

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

于 2019-06-11T13:13:59.683 回答