我试图在视图中显示应用程序角色的复选框列表。
我不确定如何使用从aspnet_roles表中提取的所有角色来填充视图。
如果我使用下面的代码,我会得到null引用异常,因为ApplicationRoles为空。
有谁可以帮助我或指导我实现这一目标的最佳方法是什么?
ViewModel代码是
public class UserViewModel
{
public string UserName { get; set; }
public List<aspnet_Roles> ApplicationRoles { get; set; }
}
在控制器中我试图使用以下代码加载它们
public ActionResult Create()
{
UserViewModel user = new UserViewModel();
user.ApplicationRoles = db.aspnet_Roles.ToList();
ViewBag.ApplicationRoles = new SelectList(db.aspnet_Roles.ToList(),"RoleId","RoleName");
return View();
}
在视图中这是
@using Test.Web.Models;
@model Test.Web.Models.UserViewModel
@using (Html.BeginForm("Create", "Users", FormMethod.Post))
{
@Html.ValidationSummary(true)
<div>
<div>
@Html.LabelFor(model => model.UserRole})
<div>
@for (var i = 0; i < Model.ApplicationRoles.Count(); i++)
{
var role = Model.ApplicationRoles[i];
@Html.HiddenFor(model => model.ApplicationRoles[i].RoleId)
@Html.CheckBoxFor(model => model.ApplicationRoles[i].RoleId)
@Html.LabelFor(model => model.ApplicationRoles[i].RoleName)
}
</div>
</div>
</div>
}
提前谢谢。
答案 0 :(得分:0)
我在这一行中解决了你的问题:
@for (var i = 0; i < UserViewModel.ApplicationRoles.Count(); i++)
应该是
@for (var i = 0; i < Model.ApplicationRoles.Count(); i++)
在您的Controller
中,您应该将ViewModel
传递给View
:
ViewData.Model = user;
return View();