【问题标题】:Why can Razor not see ViewBag, Url.Content, etc. when the layout page is outside ~/Views/Shared?为什么当布局页面在~/Views/Shared 之外时,Razor 看不到 ViewBag、Url.Content 等?
【发布时间】:2011-05-16 21:19:49
【问题描述】:

我正在开发一个 CSS 框架,我可以将它作为 NuGet 包放入其他项目。

为了保持整洁,整个框架 - 视图、样式、图像和母版页/布局页面 - 实际上存储在 ~/CssThing/ 下

与 WebForms 视图引擎完美配合,但是当我将 _layout.cshtml 文件移动到 ~/CssThing/ 然后修改我的 Razor 页面时说:

@{
Layout = "~/CssThing/_layout.cshtml";
}

它开始抱怨 ViewBag 没有定义,或者The name 'Url' does not exist in the current context,或者其他各种奇怪的地方,表明视图不再从正确的基类继承。

我怎样才能让它工作?

注意:一切都像这样分裂的原因是没有办法强制 NuGet 覆盖现有代码,并且没有办法在不拾取所有 jQuery 等引用的情况下启动一个空的 MVC3 Web 应用程序,所以而不是冒着我的框架被部署一半的风险,因为一半的文件已经存在,我将所有内容完全分开。

【问题讨论】:

    标签: layout razor viewbag


    【解决方案1】:

    检查新视图目录中是否有 web.config。最好复制 Views 中默认项目创建的那个。 此 web.config 定义了 Razor 的设置,例如默认页面基类以及隐式可用的命名空间。这些命名空间定义了您可以使用的 HTML 助手。

    【讨论】:

      【解决方案2】:

      您需要手动指定@inherits WebViewPage,或将default Web.config section(设置基本类型)添加到包含视图的文件夹中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-11
        • 2013-11-02
        • 1970-01-01
        • 1970-01-01
        • 2021-01-01
        • 2016-04-25
        相关资源
        最近更新 更多