11

我正在开发一个 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 应用程序,所以与其冒险我的框架由于一半文件已经存在,所以部署一半,我将所有内容完全分开。

4

2 回答 2

9

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

于 2011-05-16T21:28:37.200 回答
4

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

于 2011-05-16T21:39:00.580 回答