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

时间:2011-05-16 21:19:50

标签: layout razor viewbag

我正在开发一个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应用程序,所以而不是风险我的框架得到了半部署,因为一半的文件已经存在,我保持一切完全独立。

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:4)

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