layout - 布局页面在~/Views/Shared之外时,为什么Razor看不到ViewBag、Url.Content等?

标签 layout razor viewbag

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

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

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

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

它开始提示 ViewBag 未定义,或者 The name 'Url' does not exist in the current context ,或其他各种表明 View 不再从正确的基类继承的奇怪之处。

我怎样才能让它发挥作用?

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

最佳答案

检查您在新 View 目录中是否有 web.config。最好复制 View 中默认项目创建的那个。
这个 web.config 定义了 Razor 的设置,比如默认页面基类和隐式可用的命名空间。这些命名空间定义了您可以使用的 HTML 帮助程序。

关于layout - 布局页面在~/Views/Shared之外时,为什么Razor看不到ViewBag、Url.Content等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023583/

相关文章:

android - 当我点击 float 操作菜单时,我想设置一个透明的背景层。

jquery - <head> 中的 RenderSection 缺少文本

c# - 如何从文件名生成安全类名?

c# - 无法将带 [] 的索引应用于类型 'System.Dynamic.DynamicObject' 的表达式

wpf - 如何让WPF中的控件填充可用空间?

c# - TableLayoutPanel 中的单选按钮行为

c# - 如何禁用刷新页面 ajax 调用?

asp.net-mvc - MVC ViewBag 最佳实践

c# - 如何创建类的实例并从 Bag 对象(如 session )设置属性

layout_width 和 android :layout_weight manipulations with gaps (margins) and paddings