【发布时间】:2011-05-07 09:46:33
【问题描述】:
我不知道这是否发生在 PR 或 Beta 中,但如果我在 HtmlHelper 上创建扩展方法,则在 Razor 支持的页面中无法识别:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
我将它添加到Web.config 的<Namespaces> 部分:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
但是在尝试查看页面时会抛出编译错误:
@Html.Foo()
如果我使用 WebForms 重新创建页面,它可以正常工作。有什么关系?
解决方法
如果我在我的 Razor 视图中包含 @using SomeNamespace.Extensions,那么它可以工作,但我宁愿只在 Web.config 中包含它
【问题讨论】:
-
即使解决方法对我也不起作用。扩展方法将显示在 intelliSense 中,但在运行时会引发编译错误。
-
+1 用于@using 解决方法。我更喜欢它。
-
@using 解决方法对于单个视图来说是可以的。但是对于多个视图,代码管理成为一个问题。
标签: asp.net-mvc-3 extension-methods razor html-helper