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


我正在研究一个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应用程序,所以不要冒险我的框架由于一半的文件已经存在,所以部署了一半,我保持一切完全独立。


12501
2018-05-16 21:19


起源



答案:


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


9
2018-05-16 21:28



真棒。谢谢。 - Dylan Beattie
你就是男人 - Abhinav Gujjar
凉。谢谢 - Erçin Dedeoğlu


答案:


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


9
2018-05-16 21:28



真棒。谢谢。 - Dylan Beattie
你就是男人 - Abhinav Gujjar
凉。谢谢 - Erçin Dedeoğlu


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


4
2018-05-16 21:39