2014-03-30 48 views
0

所以我最初的需要是我需要在MVC控件ListBoxFor中显示两个属性。基本上我想这样做:为ListBox创建自定义文本值

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

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

那么完成此操作的最佳选择是什么?

回答

0

列表属性添加到您的模型:

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包含v可供选择的线索,而ContractLocations则包含实际选定的值。

+0

谢谢Racil!我不得不添加一些循环等来添加必要的数据,但这实际上是我在寻找的。谢谢! – i3i2uno