繁体   English   中英

mvc 5 asp.net身份角色和用户,如何避免同时使用户具有其角色并删除

[英]mvc 5 asp.net identity role and users, how to lest both in order user with it's roles and remove

这里的系统就像一个用户可能有很多角色,所以现在我可以列出用户,但是我也想列出角色

该控制器将仅列出用户,

public ActionResult listOfRolesForUser()
        {

            RoleManager<IdentityRole> RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(ndb));
            UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(ndb));
            ViewBag.AllUsers = UserManager.Users.ToList();
            return View();

        }

这是view或listOfRolesForUser.cshtml

@{
    ViewBag.Title = "listOfRolesForUser";
}

<h2>listOfRolesForUser</h2>
<table border="1">
    <tr>
        <td>User name</td>
        <td>Roles</td>
    </tr>
    @foreach (var item2 in ViewBag.AllUsers)
    {
        <tr>
            <td>@item2.UserName</td>
            <td>here i need to list related role too</td>
        </tr>
    }

</table>

现在我将如何像这样列出:

在此处输入图片说明

要同时检索“ 用户”和“ 角色” ,您可以存储两个列表并传递给视图模型。

public ActionResult Index()
{
    using (var context = new ApplicationDbContext())
    {
        UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));

        var users = UserManager.Users;
        var roles = new List<string>();

        // retrieve roles for each user
        foreach (var user in users)
        {
            string str = "";
            foreach (var role in UserManager.GetRoles(user.Id))
            {
                str = (str == "") ? role.ToString() : str + " - " + role.ToString();
            }
            roles.Add(str);
        }

        var model = new HomeViewModel()
        {
            // create view model with these fields
            users = users.ToList(),
            roles = roles.ToList()
        };
        return View(model);
    }
}

使用视图模型填充表,在HomeController实现Delete方法,并通过ajax调用导航到Home/Delete url。

@model WebApplication1.Models.HomeViewModel

<h2>listOfRolesForUser</h2>
<table border="1">
    <tr>
        <td>User name</td>
        <td>Roles</td>
        <td>Actions</td>
    </tr>

    @{
        int i = 0;

        foreach (var item in Model.users)
        {
            <tr id="@item.Id">
                <td>@item.UserName</td>
                <td>@Model.roles[i]</td>
                <td>
                    <a href="#" onclick="deleteUser('@item.Id')" id="btnDelete" data-toggle="modal" data-target="#deleteModal" title="Delete">
                        Delete
                    </a>
                </td>
            </tr>
            i++;
        }
    }
</table>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM