我有几个我正在建立的网站,显示相同或相似的数据页面。为了减少代码重复,我所做的是创建了第三个项目/网站,并且认为我将其用作共享的HTML,java脚本,CSS,图像等的位置。
我可以使用相对路径从共享项目中包含JavaScript,CSS和图像。但是我无法呈现HTML的部分页面。当尝试访问正在尝试加载部分页面的两个网站使用这样的代码:
@RenderPage("/SharedArtifacts/Views/MySharedViewscshtml")
我得到以下回应:
The virtual path '/SharedArtifacts/Views/MySharedViewscshtml' maps to another application,which is not allowed.
现在我已经google了,尝试使用〜前缀来指定路径的根,以解决问题,但无济于事…仍然是一样的错误。
关于如何解决这个问题的任何想法?
解决方法
我们一直这样做。简单(非编程)方式是在IIS中创建虚拟文件夹,映射到所有随播站点共享的共享文件夹。我们通常对错误结果页面和其他通用内容进行此操作。
/Views/SharedVirtual/somefile.ascx
路径/ Views / SharedVirtual通过IIS的虚拟文件夹映射。然后在控制器中我们可以做一个返回View(“/ Views / SharedVirtual / somefile.ascx”,somemodel);.它也可以与RenderPartial一起使用。
在本地使用项目时,我使用mklink在项目文件夹中创建一个映射到共享公用文件夹的连接点。这样VS认为文件夹是本地的,当它不是并且可以在本地运行项目进行调试。
我们通常不使用Razor,但这个概念应该是一样的,因为它不是在做共享映射的VS,它的操作系统和IIS。
一个值得注意的是,如果您编辑视图,它们将在所有项目中更改,因此您必须小心编辑,以确保在引用它们的所有项目中使用时都能兼容。