如何在ASP.NET MVC4项目之间共享HTML

mik*_*010 16 asp.net asp.net-mvc asp.net-mvc-4

我有几个我正在构建的网站,它们在页面中显示相同或相似的数据.为了减少代码重复,我所做的是创建了第3个项目/网站,并认为我将其用作共享HTML,java脚本,CSS,图像等的位置.

我可以使用相对路径从共享项目中包含JavaScript,CSS和图像.但是我无法呈现HTML的部分页面.当试图访问试图使用如下代码加载部分页面的两个网站时:

@RenderPage("/SharedArtifacts/Views/MySharedViewscshtml")
Run Code Online (Sandbox Code Playgroud)

我收到以下回复:

The virtual path '/SharedArtifacts/Views/MySharedViewscshtml' maps to another application, which is not allowed.
Run Code Online (Sandbox Code Playgroud)

现在我用谷歌搜索并尝试使用~前缀来指定解决问题的路径的根,但无济于事......仍然是同样的错误.

有关如何解决此问题的任何想法?

Wol*_*fie 5

我们一直这样做.简单(非编程)方式是在IIS中创建虚拟文件夹,映射到所有配套站点共有的共享文件夹.我们通常对错误结果页面和其他通用内容执行此操作.

/Views/SharedVirtual/somefile.ascx

该路径/Views/SharedVirtual通过IIS的虚拟文件夹进行映射.然后在控制器中我们可以做一个return View("/Views/SharedVirtual/somefile.ascx",somemodel);.它也适用于RenderPartial.

在本地处理项目时,我使用mklink在项目文件夹中创建一个映射到共享公共文件夹的连接点.这样VS认为文件夹是本地文件夹,并且可以在本地运行项目进行调试.

我们通常不使用Razor,但这个概念应该是一样的,因为它不是做共享映射的VS,而是操作系统和IIS.

需要注意的是,如果您编辑视图,它们将在所有项目中更改,因此您必须小心编辑,以确保它们在引用它们的所有项目中使用时兼容.