为什么Razor找不到我的HTML Helper?

时间:2010-12-15 12:33:58

标签: asp.net-mvc-3 razor

我正在尝试将“经典”ASP.NET MVC视图移植到Razor,并在尝试使用传统(非Razor)Html辅助方法时遇到困难。辅助方法具有以下签名:

public static string WrappedValidationSummary(this HtmlHelper htmlHelper, string SummaryError)
{
...
}

在常规(非Razor)视图中使用辅助方法时,它可以正常工作。

在Razor视图中使用它时,如下所示:

@Html.WrappedValidationSummary("Mitarbeiter konnnte nicht angelegt werden.");

我收到

的运行时错误消息
  

'System.Web.Mvc.HtmlHelper'   不包含的定义   'WrappedValidationSummary'并且没有   扩展方法   'WrappedValidationSummary'接受a   类型的第一个参数   'System.Web.Mvc.HtmlHelper'   可以找到(你错过了吗?   使用指令或程序集   引用?)

Visual Studio和Intellisense中的Razor语法检查程序在查找扩展方法的定义时没有问题。重新编译项目没有帮助。

出了什么问题?

2 个答案:

答案 0 :(得分:18)

您是否已将助手的命名空间添加到Views / web.config?

  <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="CUSTOM_NAMESPACE" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

以上内容仅适用于使用RC的情况,如果您使用的是早期测试版,则需要在页面中添加命名空间或Global.asax。

另外,我建议将返回类型更改为HtmlString

return new HtmlString(STRING_VALUE);

答案 1 :(得分:5)

或者,如果您只想用于特定的视图文件,则可以在视图的第一行使用using,而不是 Views / Web.config

@using your_current_web_namespace
.
.
.
@Html.WrappedValidationSummary("Mitarbeiter konnnte nicht angelegt werden.")