我有几个网站,我正在建设,显示相同或相似的数据在页面上。为了减少代码重复,我创建了一个第三个项目/网站,我想我会使用它作为共享HTML,java-script,CSS,图片等的位置。
我能够包含JavaScript,CSS,和图片,从共享项目使用相对路径。但是,我无法呈现HTML的部分页面。当尝试使用如下代码访问试图加载部分页面的两个网站时:
@RenderPage("/SharedArtifacts/Views/MySharedViewscshtml")
我得到以下响应:
The virtual path '/SharedArtifacts/Views/MySharedViewscshtml' maps to another application, which is not allowed.
现在我已经在谷歌上搜索并尝试使用~
前缀来指定路径的根来解决问题,但无济于事...仍然是同样的错误。
对如何解决这个问题有什么想法吗?
发布于 2015-10-30 23:36:32
我们一直都在这么做。简单的(非编程)方法是在IIS中创建虚拟文件夹,这些文件夹映射到所有配套站点通用的共享文件夹。我们通常对错误结果页面和其他通用内容执行此操作。
/Views/SharedVirtual/somefile.ascx
路径/Views/SharedVirtual
通过IIS的虚拟文件夹进行映射。然后在控制器中,我们可以做一个return View("/Views/SharedVirtual/somefile.ascx",somemodel);
。它也适用于RenderPartial。
在本地使用项目时,我使用mklink在项目文件夹中创建一个连接点,该连接点映射到共享的通用文件夹。这样,VS会认为文件夹不是本地的,可以在本地运行项目进行调试。
我们通常不使用Razor,但概念应该是一样的,因为它不是在做共享映射,而是操作系统和IIS。
需要注意的是,如果您编辑视图,它们将在所有项目中更改,因此您必须小心编辑,以确保在引用它们的所有项目中使用它们时,它们将是兼容的。
发布于 2015-11-04 08:24:20
ASP.NET MVC将在相同的程序集中查找视图。对于框架来说,将视图或HTML放在不同的程序集中是很不方便的。在内部,我认为框架不支持将View/HTML定位在程序集范围之外。您可能需要编写一些自定义代码或扩展框架,因为它是开源的。
发布于 2015-11-05 23:23:10
当我需要在多个项目之间共享代码时,我通常使用visual studio的“作为链接打开”功能。这使您可以将一个文件用于多个项目。
https://msdn.microsoft.com/en-us/library/windows/apps/jj714082(v=vs.105).aspx
https://stackoverflow.com/questions/33294424
复制相似问题