我有一个像这样的下拉列表:

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

这从 Controller 操作中获取其数据,如下所示:
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; }

最佳答案

您可以使用匿名类型:

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 属性,您可以在这种情况下重用这些属性。

关于asp.net-mvc-3 - HTML.DropdownList - 让文本字段显示多列的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10784206/

10-13 08:00