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

Layout 当布局页面在~/Views/Shared之外时,为什么Razor看不到ViewBag、Url.Content等?,layout,razor,viewbag,Layout,Razor,Viewbag,我正在开发一个CSS框架,我可以把它作为一个NuGet包放到其他项目中 为了保持整洁,整个框架-视图、样式、图像和母版页/布局页-实际上存储在~/CssThing下/ 与WebForms视图引擎完美配合,但当我将_layout.cshtml文件移动到~/CssThing/中,然后修改我的Razor页面时,会说: @{ Layout = "~/CssThing/_layout.cshtml"; } 它开始抱怨ViewBag没有定义,或者名称“Url”在当前上下文中不存在,或者各种其他奇怪之处表明

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

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

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

@{
Layout = "~/CssThing/_layout.cshtml";
}
它开始抱怨ViewBag没有定义,或者
名称“Url”在当前上下文中不存在,或者各种其他奇怪之处表明视图不再从正确的基类继承

我怎样才能让它工作


注意:所有内容都像这样分开的原因是无法强制NuGet覆盖现有代码,也无法在不获取所有jQuery等引用的情况下启动空的MVC3 web应用程序,所以不要冒险让我的框架部署一半,因为一半的文件已经存在,我将所有内容完全分开。

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

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