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

rov*_*sen 3 asp.net-mvc razor

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

@Html.CustomAction<AccountController, LogOnModel>("displayText", x => x.Register())
Run Code Online (Sandbox Code Playgroud)

而CustomAction签名是:

public static HtmlString CustomAction<TController, TModel>(this HtmlHelper<TModel> view, string displayText, Expression<Func<TController, object>> where TController : Controller
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

SLa*_*aks 6

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

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

@(Html.CustomAction<AccountController, LogOnModel>("displayText", x => x.Register()))
Run Code Online (Sandbox Code Playgroud)