如何将用户角色作为ViewModel传递给视图.净MVC



管理员应该能够创建用户并选择该用户属于哪个角色。

我的CreateUserViewModel看起来像:

public class CreateUserViewModel
{
    public string Id { get; set; }
    public string Name { get; set; }
    public List<ApplicationRole> Roles { get; set; }
}

我的控制器动作看起来像:

public ActionResult CreateUser()
{
    var model = new CreateUserViewModel();
    ApplicationDbContext appDbContext = new ApplicationDbContext();
    // this is the part that doesn't work because of the following error:
    // Error 1
    // Cannot implicitly convert type
    // 'System.Data.Entity.IDbSet<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>'
    // to 'System.Collections.Generic.List<AspNetMvcProject.Models.ApplicationRole>'.
    // An explicit conversion exists (are you missing a cast?)
    model.Roles = appDbContext.Roles;
    return View();
}

这样做的主要目的是能够获得 list of roles 可用,以便创建用户的管理员可以在<select>元素中选择用户应该属于哪些角色。

您需要将您的实体框架DBSet (Microsoft.AspNet.Identity.EntityFramework.IdentityRole)中的角色列表转换为blb_pgin_bprp.Models.ApplicationRole实例。

你可以这样做:

public ActionResult CreateUser()
{
   var model = new CreateUserViewModel();
   ApplicationDbContext appDbContext = new ApplicationDbContext();
   model.Roles = appDbContext.Roles.Select(r => new lb_pgin_bprp.Models.ApplicationRole { Id = r.ID, Name = r.Name }).ToList();
   return View();
}

在数据库角色上使用Select来创建ApplicationRole的实例,挑选出IDName

编辑:

你可能需要这样做:

public ActionResult CreateUser()
{
   var model = new CreateUserViewModel();
   ApplicationDbContext appDbContext = new ApplicationDbContext();
   var rolesFromDb = appDbContext.Roles.ToList();
   model.Roles = rolesFromDb.Select(r => new lb_pgin_bprp.Models.ApplicationRole { Id = r.ID, Name = r.Name }).ToList();
   return View();
}

相关内容

  • 没有找到相关文章

最新更新