我正在开发一个 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/