MVC ModelBind ListBox с несколькими вариантами выбора - PullRequest
1 голос
/ 20 декабря 2008

Как отправить выбор ListBox в ModelBinder?

<%=Html.Hidden("response.Index",index)%>
<%=Html.ListBox("response[index].ChoiceID",
                new MultiSelectList(gc.choice,"ChoiceID","ChoiceText") )%>

'gc.choice' - Список

Я могу получить первое выбранное значение для модели, но не второй выбор, предположительно, потому что я не могу изменить индекс.

Ответы [ 2 ]

3 голосов
/ 04 февраля 2010

Я решил это немного по-другому ...

[Model]
public IEnumerable<string> SelectedStores { get; set; }

[View]
<%= Html.ListBox("SelectedStores", 
    (MultiSelectList)ViewData["Stores"], 
    new { size = "8" }) %>

[Controller]
ViewData["Stores"] = 
    new MultiSelectList(StoreItems, "Value", "Text", model.SelectedStores);

Таким образом, модель имеет IEnumberable, который будет заполнен выбранными пользователями. Представление отображает ListBox с MultiSelectList, и контроллер передает SelectedStores из модели при создании MultiSelectList.

1 голос
/ 31 марта 2009

Я построил модель презентации SamplePresentationModel класса, которая имеет член MultiSelect userList. Тогда предположим, что IEnumerable<User> allUser это список опций. Я использую

  View(new SamplePresentationModel(){ userList = new MultiSelectList(allUsers, 
    "UserId", 
    "UserName", 
    allUsers.Select(user => user.UserID))});

для передачи MultiSelection в представление.

Тогда в представлении я могу построить список

   <label for="userList">users:</label>
    <%= Html.ListBox("usersList", Model.userList)%>

В действии POST я могу зафиксировать выборки:

IEnumerable<int> selectedUserIDs = Request["usersList"].Split(new Char[] { ',' }).Select(idStr => int.Parse(idStr));

Не знаю, поможет ли это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...