ASP.NET HTML.LabelFor из коллекции моделей
Хорошо, я очень новичок в ASP.NET 4.5 (давая PHP перерыв) и застрял с отображением метки.
У меня есть ViewModel, которая определяет необходимые модели:
public class TransactionsViewModel {
public IEnumerable<Transaction> Transactions { get; set; }
public IEnumerable<Area> Areas { get; set; }
public IEnumerable<Mistake> Mistakes { get; set; }
...
}
Транзакция - это просто еще одна модель с простыми свойствами, теперь я хочу отобразить метку для одного из свойств транзакции.
My View имеет строгий тип TransactionsViewModel
@model AuditSystem.ViewModels.TransactionsViewModel
Это означает, что при переопределении HTMLHelper имеет тип
Прототип метода, который я пытаюсь создать:
public static MvcHtmlString LabelFor<TModel, TClass, TValue>(
this HtmlHelper<TModel> helper,
IEnumerable<TClass> model,
Expression<Func<TClass, TValue>> expression,
object htmlAttributes
)
Где
Это вызывает проблему при попытке вызвать helper.LabelFor, так как это требует выражения Expression>, но мне нужно передать Func.
Я попытался восстановить выражение с допустимыми типами, но застрял при вызове html.labelfor и приведение типов не сработает.
1 ответ
Я не уверен, зачем вам переопределять LabelFor. Вы можете попробовать вот так
@Html.LabelForm(model=>model.Transactions.First().Property)
Обновить
Используйте FirstOrDefault вместо First, чтобы избежать исключения.
@Html.LabelForm(model=>model.Transactions.FirstOrDefault().Property)