У меня есть страница, где роли отображаются в списке флажков, вы можете выбрать роли, которые хотите, чтобы пользователь имел, а затем нажмите кнопку, чтобы сохранить Это.MVC: отображение ролей в списке флажков, а затем их сохранение
Вот моя модель:
public class RegisterModel
{
[DisplayName("Roles")]
public string[] Roles
{
get
{
return System.Web.Security.Roles.GetAllRoles();
}
set { }
}
}
Мое мнение:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<WebUI.Models.RegisterModel>" %>
<% using (Html.BeginForm()) { %>
<% foreach(string role in Model.Roles) { %>
<input type="checkbox" value="<%: role %>" /> <%: role %>
<% } %>
<p>
<input type="submit" value="Register" />
</p>
<% } %>
И функции из моего контроллера:
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
//save roles
return RedirectToAction("Index", "Home");
}
// If we got this far, something failed, redisplay form
return View(model);
}
Когда я пытаюсь просматривать мою страницу, я получаю Ошибка «Ссылка на объект не установлена на экземпляр объекта» в инструкции foreach, означающая, что Model.Roles пуст.
- Я правильно передаю Роли через свою модель? Или я должен передавать роли как ViewData через действие моего контроллера?
- Если я передаю роли как ViewData, а не через мою модель, как я могу получить доступ к выбранным элементам при отправке формы, чтобы я мог позвонить
Roles.AddUsersToRoles()
?