通常我会将数据绑定到DropDownListFor
a SelectList
:
@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Orders, "OrderId", "ItemName"))
有没有办法通过强类型lambdas而不是属性字符串来做到这一点.例如:
@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Orders, x => x.OrderId, x => x.ItemName))
Henk Mollema.. 13
您可以在控制器中创建选择列表,并将其分配给视图模型中的属性:
public IEnumerableOrdersList { get; set; }
控制器中的代码如下所示:
model.OrdersList = db.Orders .Select(o => new SelectListItem { Value = o.OrderId, Text = o.ItemName }) .ToList();
在视图中,您可以像这样使用它:
@Html.DropDownListFor(model => model.CustomerId, Model.OrderList)
我个人更喜欢这种方法,因为它减少了视图中的逻辑.它还可以使您的逻辑"严格打字",任何地方都没有神奇的字符串.
您可以在控制器中创建选择列表,并将其分配给视图模型中的属性:
public IEnumerable<SelectListItem> OrdersList { get; set; }
控制器中的代码如下所示:
model.OrdersList = db.Orders .Select(o => new SelectListItem { Value = o.OrderId, Text = o.ItemName }) .ToList();
在视图中,您可以像这样使用它:
@Html.DropDownListFor(model => model.CustomerId, Model.OrderList)
我个人更喜欢这种方法,因为它减少了视图中的逻辑.它还可以使您的逻辑"严格打字",任何地方都没有神奇的字符串.