【问题标题】:Custom HtmlHelper extension method usage problem in asp.net mvc razorasp.net mvc razor中自定义HtmlHelper扩展方法使用问题
【发布时间】:2011-02-20 20:51:24
【问题描述】:

我已将我的经典 asp.net mvc 视图转换为 razor。在一个视图中,有一个 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)' 有一些无效的参数

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

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    Razor 解析器看到 &lt; 并认为它是一个 HTML 标记。因此,它只将Html.CustomAction 解析为表达式。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 2016-10-03
      相关资源
      最近更新 更多