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

Dyl*_*tie 11 layout razor viewbag

我正在研究一个CSS框架,我可以将其作为NuGet包放入其他项目中.

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

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

@{
Layout = "~/CssThing/_layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

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

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

注意:一切都像这样拆分的原因是没有办法强迫NuGet覆盖现有代码,并且没有办法在没有获取所有jQuery等引用的情况下启动空的MVC3 Web应用程序,所以不要冒险我的框架因为一半的文件已经存在,所以部署了一半,我保持一切完全独立.

And*_*vey 9

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