Я хочу передать параметр шаблона моему вспомогательному методу для визуализации ошибок. Я видел несколько примеров, где это сделано, но, похоже, требует, чтобы переменные в шаблоне были в области, когда вызван помощник.MVC Razor: Как ссылаться на вспомогательный параметр в разметке Razor?
например. Expression of HelperResult to format item from a list
Я надеюсь сделать что-то вроде:
public static MvcHtmlString ErrorBlock<TModel>(this HtmlHelper helper, TModel model, string @class = null, object context = null, string view = null, object attributes = null, Func<ErrorModel,HelperResult> errorTemplate = null)
where TModel : ErrorModel
...
@ShopMR.ErrorBlock(Model, errorTemplate: r => @<div>@r.Message</div>)
Но я получаю следующие ошибки компилятора:
- не может преобразовать лямбда-выражения в предназначенный тип делегата, потому что некоторые типы возврата в блоке не являются имплицитными itly кабриолет к типу возвращаемого делегатом
- Не удается преобразовать лямбда-выражения к типу «HelperResult», потому что это не тип делегата
Я попытался создать делегат, но это приводит к одной и той же ошибки. Это возможно? Должен ли мой func вернуть какой-либо другой тип, который может быть скомпилирован/оценен как текст Razor?
Это исправляло проблему, хотя я надеялся, что есть более прохладное решение, которое все равно позволит мне использовать проверку времени компиляции. Спасибо огромное! –