我一直在写一个 cms,其中 MVC 被用作生成页面的主要引擎。
我进展顺利,但希望能够为每个站点创建一个独特的 Razor 模板,如果需要的话,可能每个 View 。
我的规则是每个项目都必须有一个与 url 链接的唯一代码。
每个项目站点的 Assets 以位置与项目相关的方式存储。
因此,与项目 C0001 关联的 Assets 将存储在 assets\C0001\
中,对于 C0002:assets\C0002\
等。
为了保持整洁,我想做的是将与位于 assets\[ProjectCode]
位置的项目相关联的 razor 模板也放在一起,但问题是我收到了关于 ViewBag not existing in context
的错误。
所以这行不通:
Layout = string.Concat("~/assets/",ViewBag.ProjectNumber,"/_Layout.cshtml");
以下将呈现页面:
Layout = string.Concat("~/Views/Shared/_",ViewBag.ProjectNumber,"Layout.cshtml");
我猜第一个布局没有呈现,因为它在已知的 View 搜索区域之外?但是当我告诉它文件在哪里时,我看不出问题是什么?
我很高兴使用示例 2 中的代码工作,但可能意味着在相当数量的项目站点之后,共享 View 目录将变得非常繁忙。
只是想知道为什么 View 需要存在于
Views
目录中?
最佳答案
您需要复制位于 Views
目录中的 web.config 并将副本放入 Assets
目录中。由于您需要为布局提供完整路径,这不是搜索路径问题,因此需要 web.config 中的信息来正确初始化 View 。
关于asp.net-mvc-3 - 为什么 MVC View 需要存在于 View 目录中才能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4889062/