Проблема использования пользовательского метода расширения HtmlHelper в бритве asp.net mvc - PullRequest
3 голосов
/ 20 февраля 2011

Я преобразовал свои классические виды 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 Ответ

6 голосов
/ 20 февраля 2011

Анализатор Razor видит < и считает, что это HTML-тег.Таким образом, он только анализирует Html.CustomAction как выражение.

Вам нужно заключить вызов в скобки, чтобы он обрабатывал весь вызов как одно выражение:

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