我正在尝试将“经典”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语法检查程序在查找扩展方法的定义时没有问题。重新编译项目没有帮助。
出了什么问题?
答案 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.")