2010-12-15 33 views
6

我试图将一个“经典”的ASP.NET MVC视图移植到Razor,并在尝试使用传统(非Razor)Html帮助器方法时被卡住了。该帮助方法具有以下签名:为什么Razor无法找到我的HTML助手?

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

帮助程序方法在常规(非Razor)视图中使用时可以正常工作。

当剃刀用它查看这样的:

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

我得到一个运行时错误消息

“System.Web.Mvc.HtmlHelper” 不包含 'WrappedValidationSummary'并且没有 扩展方法 'WrappedValidationSummary'接受 类型的第一个参数 'System.Web.Mvc.HtmlHelper' 可以找到(是否缺少 使用指令或程序集 参考?)

Visual Studio中的剃刀语法检查器和智能都没有问题,找到我的扩展方法的定义。重新编译该项目并没有帮助。

什么问题?

回答

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); 
+2

我已经将命名空间添加到我的web.config中,但我并不知道剃刀命名空间的额外配置部分。感谢您的建议! – 2010-12-15 13:15:28

+0

没问题,很高兴我能帮到你。 – kim3er 2010-12-15 13:16:27

+0

这对于RTM仍然是必需的吗?所有的Razor位似乎都包含在System.Web.Mvc程序集中,但Razor配置类似乎并不存在。 RazorWebSectionGroup的文档说它在System.Web.WebPages.Razor.dll中,但我无法在GAC中找到此程序集。当然,你不应该为此引用一个单独的程序集。 – 2011-03-02 16:25:39

5

或者您可以在视图的第一行中使用using代替查看/ Web.config中,如果你只是想使用特定视图文件。

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

将命名空间添加到我的web.configs中,对于intellisense我没有做任何事情;添加使用的统计工作。 – 2011-07-25 14:55:57

+0

也许你如何在Views/web.config中添加命名空间的方式出错了。或者在添加命名空间后尝试重建。 – CallMeLaNN 2011-08-01 08:58:12

+3

如果您将其添加到Views/Web.config中,您需要重新启动Visual Studio才能使其正常工作(重建/清理解决方案无法解决此问题)。 – Gabriel 2012-03-02 10:40:00

相关问题