Использование ListBoxFor в ASP.NET MVC 2 - PullRequest
0 голосов
/ 26 июня 2010

Я пытаюсь обновить роли, которые определенная группа имеет в моем приложении.К модели группы, которую я использую, по моему мнению, прикреплен дополнительный элемент AllRoles IEnumerable, так что, на мой взгляд, я могу сделать что-то вроде этого:

<%: Html.ListBoxFor( model => model.aspnet_Roles, new MultiSelectList( Model.AllRoles, "RoleId", "RoleName" ), new { @class = "multiselect" } )%>

. При этом будет создан выпадающий список с множественным выбором, как и ожидалось.Однако из PHP я заметил, что имя выбора было без квадратных скобок, возможно, это нормально в ASP.NET, но в PHP это неправильно.Теперь, как мне обновить группу после отправки формы, точнее, как я могу прочитать выбранные значения из нескольких элементов.Что мне нужно, так это то, что на основе RoleIds, которые я получаю, чтобы добавить соответствующие aspnet_Roles в мою модель группы.

Попытка прочитать полученные значения с использованием HttpContext.Request.Form["aspnet_Roles"] не удалась, а также уродлива.Можно ли как-то использовать модель для получения необходимых данных?Функция контроллера:

[AcceptVerbs( HttpVerbs.Post )]
public ActionResult Edit( SYSGroups updatedGroup ) {}

Спасибо

1 Ответ

1 голос
/ 26 июня 2010

Выбранные идентификаторы будут отправлены в виде коллекции:

[HttpPost]
public ActionResult Edit(string[] aspnet_Roles) 
{
    // the aspnet_Roles array will contain the ids of the selected elements
    return View();
}

Если форма содержит другие элементы, которые необходимо опубликовать, вы можете обновить модель:

public class SYSGroups
{
    public string[] Aspnet_Roles { get; set; }
    ... some other properties
}

и иметьВаш метод действия выглядит следующим образом:

[HttpPost]
public ActionResult Edit(SYSGroups updatedGroup) 
{
    // updatedGroup.Aspnet_Roles will contain an array of all the RoleIds
    // selected in the multiselect list.
    return View();
}
...