向ASP.NET MVC 3视图添加命名空间

11

我曾尝试在我的ASP.NET MVC 3应用程序的web.config文件中的configuration/system.web/pages/namespaces中添加命名空间,以便在我的视图中使用这些命名空间中的类而不需要@using,但是这没有效果。我该如何向我的视图添加命名空间?

3个回答

28

MVC Razor在命名空间方面有所不同。

请查看第二个web.config,即位于您的Views文件夹中的那个,并以此方式添加命名空间。

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="Telerik.Web.Mvc.UI;"/>
        </namespaces>
    </pages>
</system.web.webPages.razor>

呵呵,我甚至没有注意到那里有一个 web.config 文件。完美运作,谢谢加一分。我会在几分钟内接受的。 - Jake Petroules
10
注意,在将Resource文件夹添加到命名空间并重新构建解决方案后,关闭和重新打开视图的下面答案也是必需的,才能使Visual Studio停止给我报错。 - Matthew
很好的答案,你应该删除多余的 ';' <add namespace="Telerik.Web.Mvc.UI;"/>。谢谢! - Cacho Santa

9

我不确定为什么它如此不稳定,但很可能它实际上是在工作的,只是Visual Studio在你关闭并重新打开视图之前无法识别它。另外,请确保您在位于Views目录中的web.config文件中。


试过了,没有成功。 ;) 在发布之前,我确保尝试上传并执行页面,但无法编译视图。 - Jake Petroules
所以你正在修改位于Views目录根目录下的web.config,就像@DisplacedGuy建议的那样?我认为那应该可以解决问题。另外,请确保你在system.web.webPages.razor的层次结构中(如果这是你正在使用的视图引擎)。 - ataddeini
是的,我的原始问题是我使用了 configuration/system.web/pages/namespaces 而不是 @DisplacedGuy 建议的 system.web.webPages.razor - Jake Petroules
两个小时都没能让它工作,后来我看到了你的帖子,关闭了视图,重新打开,然后它就工作了...感谢你的观察和建议。 - met.lord

1

我使用了这种方法将资源文件包含到我的视图中,但Razor不想选择我的类。经过一些令人头疼的尝试后,我意识到我没有将Resources.resx文件的访问修饰符更改为public(默认情况下创建为Internal)。一旦我更改并重新编译,我就可以从所有视图中访问我的资源。

新手错误,很遗憾看到它发生,但希望它能为某人节省一些痛苦。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接