尝试为Asp.Net mvc 5中的用户和角色播种数据时出错

阿里安

当我尝试使用用户和角色的种子数据更新数据库时,我收到“对一个或多个实体的验证失败。有关更多详细信息,请参见'EntityValidationErrors'属性。” 错误。角色已创建,我可以在db表中看到它们,但是没有创建具有admin角色的用户。此外,角色也不会显示在创建和编辑用户视图中。

用于创建用户的ViewModel:

public class InsertUser
{
    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]
    [Display(Name = "First Name")]
    [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$", ErrorMessage = "The {0} must start with upper letter and contain only alphabetical letters")]//requires the first character to be upper case and the remaining characters to be alphabetical
    public string FirstName { get; set; }

    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]
    [Display(Name = "Last Name")]
    [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$", ErrorMessage = "The {0} must start with upper letter and contain only alphabetical letters")]
    public string LastName { get; set; }

    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    public string Email { get; set; }

    [Display(Name = "User Name")]
    public string UserName { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm new password")]
    [Compare("Password", ErrorMessage = "The new password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }

    public List<CheckBoxItem> Roles { get; set; }
}

public class CheckBoxItem
{
    public string Id { get; set; }
    public string Text { get; set; }
    public bool Checked { get; set; }
}

用于编辑用户的ViewModel:

public class EditUser
{
    public EditUser()
    {
        Roles = new List<CheckBoxItem>();
    }

    [Key]
    public string Id { get; set; }

    [Display(Name = "User Name")]
    public string UserName { get; set; }

    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]
    [Display(Name = "First Name")]
    [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$", ErrorMessage = "The {0} must start with upper letter and contain only alphabetical letters")]
    public string FirstName { get; set; }

    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)]
    [Display(Name = "Last Name")]
    [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$", ErrorMessage = "The {0} must start with upper letter and contain only alphabetical letters")]
    public string LastName { get; set; }

    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    public string Email { get; set; }        

    public List<CheckBoxItem> Roles { get; set; }
}

我创建了自己的ViewModels来编辑和创建用户,因为这种情况是这样的,必须从管理员创建用户,因此为了使内容分开,我创建了自己的ViewModel,与AccountViewModel不同。但是除此之外,还可以像使用个人用户帐户,电子邮件,用户名和密码在ASp.Net MVC中开箱即用一样创建一个简单的用户。管理员有权添加更多详细信息,例如名字和姓氏并分配角色。

创建(和编辑)视图:

...
 <div class="form-group">
        @Html.LabelFor(model => model.Roles, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.CheckBoxListFor(model => model.Roles
            , model => model.Roles
            , model => model.Id
            , model => model.Text
            , model => model.Checked
            , model => new { @class = "checkbox-inline" })
        </div>
    </div>
...

我为ChechBoxListFor html帮助程序安装了MvcCheckBoxList nuget。

用于创建用户的get操作方法:

public ActionResult Create()
    {
        var items = new InsertUser();
        items.Roles = _roleManager.Roles.Select(x => new CheckBoxItem { Id = x.Id, Text = x.Name, Checked = false }).ToList();
        return View(items);
    }

以及Configuration类,种子方法:

if (!context.Roles.Any(r => r.Name == "admin"))
        {
            var store = new RoleStore<IdentityRole>(context);
            var manager = new RoleManager<IdentityRole>(store);
            var role = new IdentityRole { Name = "admin" };

            manager.Create(role);
        }

        if (!context.Roles.Any(r => r.Name == "user"))
        {
            var store = new RoleStore<IdentityRole>(context);
            var manager = new RoleManager<IdentityRole>(store);
            var role = new IdentityRole { Name = "user" };

            manager.Create(role);
        }

        if (!context.Users.Any(u => u.UserName == "admin"))
        {
            var store = new UserStore<ApplicationUser>(context);
            var manager = new UserManager<ApplicationUser>(store);
            var user = new ApplicationUser { UserName = "admin", Email="[email protected]" };

            manager.Create(user, "password123");
            manager.AddToRole(user.Id, "admin");
        }

仅作参考,我输入密码要求至少6个字母,并评论了其他要求,例如RequiredLowercase,RequieredUppercase,RequireNonLetterOrDigit,RequireDigit。

因此,有人可以帮助我解决此问题,创建管理员用户以及在编辑和创建视图中显示角色吗?

提奈拉

在种子方法中,如果是创建角色的位置,则替换IdentityRoleApplicationRole

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET(MVC)用户,角色和角色中的用户

来自分类Dev

ASP.NET(MVC)用户,角色和角色中的用户

来自分类Dev

如何使用Identity ASP.NET Core通过代码优先迁移为用户和角色播种

来自分类Dev

ASP.net MVC + ASP.net身份播种角色和用户

来自分类Dev

我们可以在MVC 5中使用Asp.Net成员资格和角色提供程序吗?

来自分类Dev

我们可以在MVC 5中使用Asp.Net成员资格和角色提供程序吗?

来自分类Dev

尝试使用ASP.NET MVC从Kendo UI Grid中的子网格重定向时出错

来自分类Dev

ASP.NET MVC 5 自定义 RoleProvider 无法从数据库中检索用户名的角色

来自分类Dev

ASP.Net MVC 5检查用户角色的_Layout

来自分类Dev

当我尝试在ASP.NET MVC中添加新用户时插入冲突

来自分类Dev

具有ASP.Net Identity的ASP.NET MVC5中的自定义验证和角色提供程序

来自分类Dev

如何在ASP.NET MVC 5中列出具有角色名称的用户

来自分类Dev

为ASP.NET MVC5关系创建DropDownList

来自分类Dev

ASP.NET MVC 5模型绑定列表为空

来自分类Dev

asp.net mvc 5 DropDownListFor始终为空

来自分类Dev

ASP.NET MVC 5模型绑定列表为空

来自分类Dev

asp.net mvc-5 HttpPostedFileBase 为空

来自分类Dev

asp.Net MVC视图模型在发布时为空

来自分类Dev

JavaScript-AJAX /“数据”为空/asp.net MVC

来自分类Dev

在ASP .NET MVC中更改角色权限

来自分类Dev

删除ASP.NET MVC 5中的角色

来自分类Dev

为ASP .NET MVC中的静态资源启用CORS吗?

来自分类Dev

在ASP.NET MVC中回发模型为null

来自分类Dev

在asp.net MVC中为dropdownlist创建列表

来自分类Dev

“文件不是以'%PDF-'开头。” 尝试加载PDF时出错-ASP.NET MVC

来自分类Dev

列出asp.net Identity 2.0中的用户和角色

来自分类Dev

ASP.NET 5(MVC6)如何为用户播种

来自分类Dev

如何在ASP.NET MVC中将用户角色传递为ViewModel?

来自分类Dev

ASP.NET MVC 将用户的角色显示为逗号分隔的字符串

Related 相关文章

  1. 1

    ASP.NET(MVC)用户,角色和角色中的用户

  2. 2

    ASP.NET(MVC)用户,角色和角色中的用户

  3. 3

    如何使用Identity ASP.NET Core通过代码优先迁移为用户和角色播种

  4. 4

    ASP.net MVC + ASP.net身份播种角色和用户

  5. 5

    我们可以在MVC 5中使用Asp.Net成员资格和角色提供程序吗?

  6. 6

    我们可以在MVC 5中使用Asp.Net成员资格和角色提供程序吗?

  7. 7

    尝试使用ASP.NET MVC从Kendo UI Grid中的子网格重定向时出错

  8. 8

    ASP.NET MVC 5 自定义 RoleProvider 无法从数据库中检索用户名的角色

  9. 9

    ASP.Net MVC 5检查用户角色的_Layout

  10. 10

    当我尝试在ASP.NET MVC中添加新用户时插入冲突

  11. 11

    具有ASP.Net Identity的ASP.NET MVC5中的自定义验证和角色提供程序

  12. 12

    如何在ASP.NET MVC 5中列出具有角色名称的用户

  13. 13

    为ASP.NET MVC5关系创建DropDownList

  14. 14

    ASP.NET MVC 5模型绑定列表为空

  15. 15

    asp.net mvc 5 DropDownListFor始终为空

  16. 16

    ASP.NET MVC 5模型绑定列表为空

  17. 17

    asp.net mvc-5 HttpPostedFileBase 为空

  18. 18

    asp.Net MVC视图模型在发布时为空

  19. 19

    JavaScript-AJAX /“数据”为空/asp.net MVC

  20. 20

    在ASP .NET MVC中更改角色权限

  21. 21

    删除ASP.NET MVC 5中的角色

  22. 22

    为ASP .NET MVC中的静态资源启用CORS吗?

  23. 23

    在ASP.NET MVC中回发模型为null

  24. 24

    在asp.net MVC中为dropdownlist创建列表

  25. 25

    “文件不是以'%PDF-'开头。” 尝试加载PDF时出错-ASP.NET MVC

  26. 26

    列出asp.net Identity 2.0中的用户和角色

  27. 27

    ASP.NET 5(MVC6)如何为用户播种

  28. 28

    如何在ASP.NET MVC中将用户角色传递为ViewModel?

  29. 29

    ASP.NET MVC 将用户的角色显示为逗号分隔的字符串

热门标签

归档