【问题标题】:Assign Roles to Users Asp.Net MVC为用户分配角色 Asp.Net MVC
【发布时间】:2020-10-16 17:39:05
【问题描述】:

为用户、角色和角色映射创建了所需的模型类。但无法从 View 为用户分配角色。需要创建发布功能来更新特定用户的角色。下面是代码。

  1. 用户模型类
public class Users
    {
        [Key]
        public int ID { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
    }
  1. RoleMaster 模型类
public class RoleMaster
    {
        [Key]
        public int ID { get; set; }
        public string RollName { get; set; }
    }
  1. UserRolesMapping 模型类
public class UserRolesMapping
    {
        [Key]
        public int ID { get; set; }
        public int UserID { get; set; }
        public int RoleID { get; set; }

        [ForeignKey("UserID")]
        public virtual Users Users { get; set; }

        [ForeignKey("RoleID")]
        public virtual RoleMaster RoleMaster { get; set; }
    }
  1. 数据库类
public class Db :DbContext
    {
        public DbSet<Users> Users { get; set; }

        public DbSet<RoleMaster> RoleMasters { get; set; }

        public DbSet<UserRolesMapping> UserRolesMappings { get; set; }


    }
  1. 使用 GET 方法注册角色操作以显示用户和角色
[HttpGet]        
        public ActionResult RegisterRole()
        {
            using (Db db = new Db())
            {
                ViewBag.Name = new SelectList(db.RoleMasters.ToList(), "RollName", "RollName");
                ViewBag.UserName = new SelectList(db.Users.ToList(), "UserName", "UserName");
                return View();
            }


        }
  1. 查看以显示用户名和角色下拉菜单以选择哪个工作正常并显示正确的数据。
@model EmpMVC.Models.Users
@{
    ViewBag.Title = "RegisterRole";
}

<h2>RegisterRole</h2>
@using (Html.BeginForm("RegisterRole", "Users", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    <div class="form-group">
        <label class="control-label col-md-2">Select UserName</label>
        <div class="col-md-5">
            @Html.DropDownList("UserName")
        </div>
    </div>

    <div class="form-group">
        <label class="control-label col-md-2">Select Role</label>
        <div class="col-md-5">
            @Html.DropDownList("Name")
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-5">
            <input type="submit" class="btn btn-primary" value="Register" />
        </div>
    </div>
}

无法编写正确的代码来更新列出的特定用户的正确配置文件。

帮助非常感谢

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    得到了解决,感谢我的朋友 Aniket,帮助我完成了调试过程,并且能够连接点。 这是有效的代码

    [HttpPost]
            public ActionResult RegisterRole(RoleMaster role, User user)
            {
                using (Db db = new Db())
                {
                    UserRolesMapping dto = new UserRolesMapping();
    
                    User userDto = db.Users.FirstOrDefault(x => x.UserName == user.UserName);
                    dto.UserID = userDto.UserID;
    
                    RoleMaster roleDto = db.RoleMasters.FirstOrDefault(x => x.RollName == role.RollName);
                    dto.RoleID = roleDto.RoleID;
    
                    db.UserRolesMappings.Add(dto);
                    db.SaveChanges();
    
                }
                return RedirectToAction("Roles");
            }
    

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 2015-08-01
      • 2016-01-30
      • 2019-07-26
      • 1970-01-01
      • 2010-10-09
      • 2013-01-02
      • 2018-11-11
      • 1970-01-01
      相关资源
      最近更新 更多