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
    )

Где - Транзакция ViewModel (строго типизированный), а - (Транзакция)

Это вызывает проблему при попытке вызвать helper.LabelFor, так как это требует выражения Expression>, но мне нужно передать Func.

Я попытался восстановить выражение с допустимыми типами, но застрял при вызове html.labelfor и приведение типов не сработает.

1 ответ

Я не уверен, зачем вам переопределять LabelFor. Вы можете попробовать вот так

@Html.LabelForm(model=>model.Transactions.First().Property)

Обновить

Используйте FirstOrDefault вместо First, чтобы избежать исключения.

 @Html.LabelForm(model=>model.Transactions.FirstOrDefault().Property)
Другие вопросы по тегам