HTML.DropdownList - 文本字段显示多列的值

时间:2012-05-28 11:50:18

标签: asp.net-mvc-3

我有一个如下的下拉列表:

@Html.DropDownList("DeliveryOptions",
(IEnumerable<SelectListItem>)ViewData["DeliveryOptions"])

这从控制器动作获取数据如下:

var options = context.DeliveryTypes.Where(x => x.EnquiryID == enqId);
ViewData["DeliveryOptions"] = new SelectList(options, "DeliveryTypeId", 
"CODE" + " - " + "DeliveryPrice");

我想让我的下拉列表在其文本字段中显示CODE + DeliveryPrice,例如:'TNTAM - 17.54'但我收到以下错误:

DataBinding: 'MyApp.Models.DeliveryTypes' does not contain a property 
with the name 'CODE - DeliveryPrice'.

我的DeliveryType模型如下所示:

[Key]
public int DeliveryTypeId { get; set; }
public string CODE { get; set; }
public decimal DeliveryPrice { get; set; }

1 个答案:

答案 0 :(得分:1)

您可以使用匿名类型:

var options = context.DeliveryTypes
    .Where(x => x.EnquiryID == enqId)
    .Select(x => new { Value = x.DeliveryTypeId, Text = x.CODE + " - " + x.DeliveryPrice });

ViewData["DeliveryOptions"] = new SelectList(options, "Value", "Text");

或者创建一个可以重复使用的特定CustomSelectListItem类,其中包含ValueText属性,您可以在此类情况下重复使用这些属性。