我有一個角色顯示在複選框列表中的頁面,您可以選擇用戶想要的角色,然後單擊一個按鈕進行保存它。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爲空。
- 我是否通過我的模型正確地傳遞角色?還是應該通過我的Controller動作將角色作爲ViewData傳遞?
- 如果我將角色作爲ViewData傳遞而不是通過我的模型傳遞,那麼當我提交表單時如何才能訪問所選項目,以便我可以調用
Roles.AddUsersToRoles()
?