asp.net mvc razor中的自定义HtmlHelper扩展方法使用问题

时间:2011-02-20 20:51:24

标签: asp.net-mvc razor

我已将经典的asp.net mvc视图转换为剃刀。在视图中,使用了HtmlHelper的扩展方法(它有重载):

@Html.CustomAction<AccountController, LogOnModel>("displayText", x => x.Register())

CustomAction签名是:

public static HtmlString CustomAction<TController, TModel>(this HtmlHelper<TModel> view, string displayText, Expression<Func<TController, object>> where TController : Controller

我还在构建时启用了视图编译(通过.proj文件)。当我构建项目时,我得到指向该行的这些错误:

  • 参数1:无法转换 '方法组'来 'System.Web.WebPages.HelperResult'

  • 最佳重载方法匹配 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' 有一些无效的论点

这些错误的原因是什么?我该如何纠正?

1 个答案:

答案 0 :(得分:6)

Razor解析器看到<并认为它是HTML标记。因此,它只解析Html.CustomAction作为表达式。

您需要将调用包装在括号中以强制它将整个调用视为单个表达式:

@(Html.CustomAction<AccountController, LogOnModel>("displayText", x => x.Register()))