asp.net-mvc-3 - 为什么 MVC View 需要存在于 View 目录中才能工作?

标签 asp.net-mvc-3 razor viewbag

我一直在写一个 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/

相关文章:

c# - 单引号 - 我如何输出它并在源代码中看到它而不是'

javascript - jQuery 数据表 : Weird sorting with Dates

javascript - HTML Canvas 大小调整为 0px

asp.net-mvc-4 - 调用 Partial View 并将多个 ViewBag 值作为参数传递

jquery - 从 Controller 调用Viewbag数据来查看

ajax - ASP.NET MVC 3 如何在创建 View 中实现多对多关系

c# - 使用包含逗号的数据写入 MVC 中的 csv

asp.net-mvc - 防止验证 asp.net MVC 3 中的表单的一部分

asp.net-mvc - 使用小写键从 MVC View 编码 JSON?

asp.net-mvc - MVC 从另一个 Controller 传递 ViewBag 值