为ListBoxFor创建自定义文本值

时间:2014-03-30 05:26:59

标签: asp.net asp.net-mvc

所以我最初需要的是我需要在MVC控件ListBoxFor中显示两个属性。基本上我想做这样的事情:

       @Html.ListBoxFor(m => m.ContractLocations, new SelectList(Model.ContractLocations, "CUSTNMBR", "CUSTNAME" + " - " + "CUSTNMBR" ), new { @class = "form-control row marb10", size = 15 })

但显然它不会让我这样做。所以我假设我需要在ViewModel中创建自定义属性?但我不确定如何在我的模型中组合两个字符串?基本上我想创建类似于ko.computed的东西,它将两个值一起添加,然后我可以在ListBox控件上显示它。虽然我可能会想到这一切都错了,也许还有一个更容易的选择?

那么实现这一目标的最佳选择是什么?

1 个答案:

答案 0 :(得分:0)

向模型添加list属性:

public IEnumerable<SelectListItem> ContractLocationsList { get; set; }

Action中,构建您的列表,例如:

myModel.ContractLocationsList = new List<SelectListItem>() {
  new SelectListItem() { Value = Customer.Id, Text = Customer.Name + " - " + Customer.Number }
};

现在在您的View中,您可以简单地说:

@Html.ListBoxFor(m => m.ContractLocations, Model.ContractLocationsList, ...)

请注意,ContractLocationsList包含可供选择的值列表,而ContractLocations包含实际选定的值。