【发布时间】:2015-08-01 08:19:15
【问题描述】:
好吧,我对 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; }
...
}
Transaction 只是另一个具有简单属性的模型,现在我想为其中一个 Transaction 属性显示一个标签。
我的视图具有强类型 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 时卡住了,并且类型转换不起作用。
【问题讨论】:
-
你能解释一下你期望的输出是什么。您是在尝试为集合创建标签,还是为集合中的项目创建属性。第一个没有意义,因为
<label>元素与表单控件相关联(单击其设置焦点)并且您不能为集合创建表单控件 -
我的 ViewModel 有一个事务集合。我想显示 Transaction.Property 的标签。我希望调用我的覆盖: html.labelfor(Model.Transactions, t => t.property)
标签: c# asp.net asp.net-mvc ienumerable html.labelfor