【问题标题】:Cannot add new role in MVC5 Microsoft.AspNet.Identity.EntityFramework.IdentityRole?无法在 MVC5 Microsoft.AspNet.Identity.EntityFramework.IdentityRole 中添加新角色?
【发布时间】:2015-11-27 18:42:45
【问题描述】:

我之前使用我的 MVC 应用程序添加了 3 个角色。现在我无法添加新角色。当我调试时,我可以看到新的角色 ID,但角色名称为空。我该如何解决这个问题?

我目前有 3 个角色。用户、管理员、销售。现在我想添加帐户角色并且无法添加。

控制器

// POST: /Roles/Create
[HttpPost]
public ActionResult Create(FormCollection collection)
{
    try
    {
        context.Roles.Add(new Microsoft.AspNet.Identity.EntityFramework.IdentityRole()
        {
            Name = collection["RoleName"]
        });
        context.SaveChanges();
        ViewBag.ResultMessage = "Role created successfully !";
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

CSHTML

@model Microsoft.AspNet.Identity.EntityFramework.IdentityRole

<div class="container body-content">
    @{
        ViewBag.Title = "Create";
    }

    <h2>Create Role</h2>
    @Html.ActionLink("List Roles", "Index") | @Html.ActionLink("Manage User Role", "ManageUserRoles")
    <hr />
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <p>
            <div class="form-group">
                @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Name, new { @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.Name)
                </div>
            </div>
        </p>
        <br />
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
        </div>
    }
</div>

【问题讨论】:

    标签: entity-framework asp.net-mvc-5 asp.net-identity


    【解决方案1】:

    你应该只在你的视图中使用 viewModels,但是当你现在使用你的视图和对象时,你应该调整你的控制器以使用 mvc roleManager(更容易):

    // POST: /Roles/Create
    [HttpPost]
    public ActionResult Create(IdentityRole role)
    {
        try
        {
            var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
            roleManager.Create(role)
    
            context.SaveChanges();
            ViewBag.ResultMessage = "Role created successfully !";
    
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }
    

    【讨论】:

    • 谢谢 Jelle,/Roles/Create 是自动生成的,因此 cshtml。现在正在工作。
    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2020-11-30
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    相关资源
    最近更新 更多