Dunno如果在PR或Beta中发生这种情况,但如果我创建了一个扩展方法HtmlHelper
,则在Razor驱动的页面中无法识别:
namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static string Foo(this HtmlHelper html) { return "Foo"; } } }
我把它添加到以下
部分Web.config
:
但是在尝试查看页面时会抛出编译错误:
@Html.Foo()
如果我使用WebForms重新创建页面,它可以正常工作.这是怎么回事?
解决方法
如果我@using SomeNamespace.Extensions
在我的Razor视图中包含它,那么它可以工作,但我更愿意将它包含在内Web.config
自Beta版以来,Razor使用不同的配置部分来全局定义命名空间导入.在您的Views\Web.config
文件中,您应添加以下内容:
使用MVC 3升级工具自动确保您拥有正确的配置值.
请注意,您可能需要关闭并重新打开文件,以便编辑器选择更改.
由于接受的答案建议您可以通过添加到配置文件的部分为所有视图添加"使用".
但是对于单个视图,您可以使用
@using SomeNamespace.Extensions
我在使用Razor的MVC 4应用程序中遇到了同样的错误.为了清理web.config文件,我删除了两个webpages:
配置值:
一旦我恢复了这些配置值,页面就会正确编译,并且有关.Partial()
扩展方法的错误消失了.
我在VS 2015中遇到过这个问题.以下内容为我解决了这个问题:
在appsettings中找到"webpages:Version"并将其更新到3.0.0.0版.我的web.config了
我把它更新到了