2013-04-09 3 views
5
class User() { 
    public List<Customer> Customers; 
} 

class Customer() { 
    public long Id; 
    public string Name; 
} 

Я заселить выбранные элементыКак отобразить множественного выбора списка из списка <MyObject>

User MyUser = new User(); 
MyUser.Customers = db.Customers.Where(...).ToList(); 

я передаю список всех элементов таким образом

ViewBag.Customers = db.Customers.OrderBy(c => c.Name).ToList(); 

На мой взгляд, я хочу для отображения его как многоэлементного HTML-элемента со всеми (ViewBag.Customers) элементами и (MyUser.Customers) как выбранными. Я попытался с

@model MySCL.Models.User 

@Html.ListBoxFor(m => m.Customers, new MultiSelectList(ViewBag.Customers, "Id", "Name"), new {Multiple = "multiple", size = "5" }) 

но отображать только полный список без выбора каких-либо предметов. Это лучшая практика? Есть ли еще лучший способ? Вместо списка клиентов, если бы у меня был список строк, как я могу это сделать?

+1

Рик Андерсон знает трюк http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with -aspnet-mvc – Komengem

ответ

1

MultiSelectList constructor также принимает IEnumerable список элементов, которые будут выбраны, так что если вы измените код:

new MultiSelectList(ViewBag.Customers, "Id", "Name", Model.Customers) 

Список должен начать все пункты клиента выбраны.

+0

Я хочу начать со всех элементов (ViewBag.Customers, которые содержат всех Клиентов) в моем списке и (MyUser.Customers, который является подмножеством ViewBag.Customers) как выбранный. – whiteproud

+0

Затем четвертый параметр становится Model.Customers. –

1

Я решил передать 4-й параметр в виде списка int или string с единственным ключом объектов, а не списком объектов.

new MultiSelectList(ViewBag.Customers, "Id", "Name", Model.Customers.Select(c => c.Id)) 
Смежные вопросы