0

好的,我对 ASP.NET 4.5 非常陌生(让 PHP 休息一下)并且坚持渲染标签。

我有一个 ViewModel 定义了必要的 Models :

 public class TransactionsViewModel {
    public IEnumerable<Transaction> Transactions { get; set; }
    public IEnumerable<Area> Areas { get; set; }

    public IEnumerable<Mistake> Mistakes { get; set; }
    ...
 }

Transaction 只是另一个具有简单属性的模型,现在我想为其中一个 Transaction 属性显示标签。

我的视图具有强类型 TransactionsViewModel

@model AuditSystem.ViewModels.TransactionsViewModel

这意味着 HTMLHelper 在覆盖时具有 <TransactionsViewModel> 类型。

我试图创建的方法原型是:

public static MvcHtmlString LabelFor<TModel, TClass, TValue>(
        this HtmlHelper<TModel> helper,
        IEnumerable<TClass> model,
        Expression<Func<TClass, TValue>> expression,
        object htmlAttributes
    )

其中 <TModel> 是 TransactionsViewModel(强类型),<TClass> 是(Transaction)

这在尝试调用 helper.LabelFor 时会导致问题,因为它需要 Expression> 的表达式,但我需要传递 Func。

我试图用有效类型重建一个表达式,但在调用 html.labelfor 时卡住了,并且类型转换不起作用。

4

1 回答 1

-1

我不确定您为什么需要覆盖 LabelFor。你可以这样试试——

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

更新

使用 FirstOrDefault 而不是 First 以避免异常。

 @Html.LabelFor(model=>model.FirstOrDefault().Property)
于 2015-05-20T09:17:33.197 回答