在Asp.NETMVC中使用包含集合的集合

在Asp.NETMVC中使用包含集合的集合,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,正在寻找有关此问题的一些指导(以下是一个并行示例): 我有一个视图,在该视图中,我需要显示每行的基本用户信息列表(例如名字/姓氏)。此外,我需要为每个用户提供代表权限级别的复选框列表。可能的权限列表对于每个人都是相同的;但是,需要由数据库动态驱动,因为可能会添加或删除不同的权限集 所以…我有一个用户列表,以及一个普通但可变的权限列表,每个用户都需要跟踪 在ASP.Net视图中,从对象绑定的角度来管理它的最佳方法是什么?您应该在视图模型中创建一个用户列表。用户应该是一个类,您可以在该类中创建一个属

正在寻找有关此问题的一些指导(以下是一个并行示例):

我有一个视图,在该视图中,我需要显示每行的基本用户信息列表(例如名字/姓氏)。此外,我需要为每个用户提供代表权限级别的复选框列表。可能的权限列表对于每个人都是相同的;但是,需要由数据库动态驱动,因为可能会添加或删除不同的权限集

所以…我有一个用户列表,以及一个普通但可变的权限列表,每个用户都需要跟踪


在ASP.Net视图中,从对象绑定的角度来管理它的最佳方法是什么?

您应该在视图模型中创建一个用户列表。用户应该是一个类,您可以在该类中创建一个属性,该属性是权限级别列表,因此在您的视图中,您应该调用如下内容:

<ul>
    foreach(var user in Model.Users)
    {
      <li> user.FirstName...
       <ul>
        foreach(var permissions in user.Permissions)
        {
         <li> permission.SomeProperty </li>
         }
       </ul>
      </li>
    }
</ul>
    foreach(Model.Users中的var用户) {
  • user.FirstName。。。
      foreach(user.permissions中的var权限) {
    • 许可权
    • }
  • }

我使用

在AssignPermissionViewModel中可以有一个用户集合,在每个用户(UserModel)中可以有一个权限集合。然后在AssignPermission视图中,应呈现用户编辑器:

@Html.EditorFor(model => model.Users) //here model is a AssignPermissionViewModel
在用户编辑器模板中,您应该呈现权限模板:

@Html.EditorFor(model => model.Permissions) //here model is a UserModel
这样可以避免在AssignPermission视图中出现foreach循环,并且可以在另一个视图中重用任何编辑器。。。(尽管这些都非常具体)

注意:使用显示模板而不是编辑器模板来显示用户信息更合适,因为您不打算在此视图中编辑任何用户,请检查以下内容: