Многие из моих помощников HTML получают лямбда-выражение в качестве параметра.Помощники вызываются из представлений MVC, а лямбда-выражение предоставляет помощнику одно из полей базовой модели представления.Следующее работает отлично:
//Helper:
public static MvcHtmlString MyHelper<T, TValue>(this HtmlHelper<T> helper,
Expression<Func<T, TValue>> Parameter1
/*More parameters*/)
//View:
@Html.MyHelper(m => m.Field1 /*More parameters*/)
Я хотел бы добавить второй параметр, который сделает второе поле из модели доступным для помощника, что-то вроде этой строки:
//Helper:
public static MvcHtmlString MyHelper<T, TValue>(this HtmlHelper<T> helper,
Expression<Func<T, TValue>> Parameter1,
Expression<Func<T, TValue>> Parameter2
/*More parameters*/)
//View:
@Html.MyHelper(m => m.Field1,
m => m.Field2 /*More parameters*/)
Представление генерирует ошибку компиляции CS0411 (Аргументы типа для метода '...' не могут быть выведены из использования. Попробуйте явно указать аргументы типа.).Я понимаю суть сообщения об ошибке, но не знаю, как сопоставить это с этим случаем.
Следующее компилируется, но я не знаю, как получить два параметра на стороне метода Helper:
//View:
@Html.MyHelper(m => new
{
m.Field1,
m.Field2
} /*More parameters*/)
Как перенести более одного поля (столбца) из базовой модели представления в помощник HTML?