【问题标题】:user roles management in mvc5mvc5中的用户角色管理
【发布时间】:2015-04-19 23:03:18
【问题描述】:

我在 mvc5 应用程序中使用种子创建了一些演示用户和一些角色。成功地将用户分配给几个角色。一切正常。现在我想要但是我不知道如何建立用户管理,ui界面将负责

  • 创建/编辑用户并分配给一个或多个角色

角色将被硬编码(RoleOne、RoleTwo、RoleThree)。

我正在考虑使用自定义视图模型创建视图,它只需要很少的属性

Username
Password
Email

以及视图上通过复选框分配的角色列表。

问题是:我应该如何在 viewmodel 上构造这个 Roles 属性以及如何在后控制器操作端接收检查的角色?

【问题讨论】:

  • 您可以在视图模型中为selected 设置一个布尔属性,然后在帖子中循环浏览所有复选框以查看哪些复选框确实被选中。

标签: c# .net asp.net-mvc


【解决方案1】:

您的问题归结为一个用例,您希望在视图模型中发布一组子项,其中子项表示 UI 中的复选框。

为您的视图创建一个视图模型,您将在其中创建用户并同时分配角色。

public class AddUserRoleVM
{
    public string UserName { set; get; }
    public List<UserRoleVM> Roles { set; get; }
    public AddUserRoleVM()
    {
        Roles=new List<UserRoleVM>();
    }
}

public class UserRoleVM
{
    public int RoleId { set; get; }
    public String RoleName { set; get; }
    public bool IsSelected { set; get; }
}

现在在您的 GET 操作中,创建 AddUserRoleVM 视图模型的对象,初始化 Roles 集合属性并将其发送到视图。

public ActionResult Roles()
{
    var vm = new AddUserRoleVM();
    vm.Roles = GetRoles();
    return View(vm);
}

private List<UserRoleVM> GetRoles()
{
    //Hard coded for demo.You should get the roles from db
    return new List<UserRoleVM>
    {
        new UserRoleVM {RoleId = 1, RoleName = "Admin"},
        new UserRoleVM {RoleId = 2, RoleName = "Editor"}
    };
}

现在在Views/YourControllerName 下创建一个名为EditorTemplates 的文件夹。然后在 UserRoleVM.cshtml 下创建一个新视图,内容如下。

@model ReplaceYourNamespaceHere.UserRoleVM
<div>
    @Html.HiddenFor(s=>s.RoleId)
    <label>@Model.RoleName</label>
    @Html.CheckBoxFor(s=>s.IsSelected)
</div>

现在在我们的主视图(Roles.cshtml)中,使用Html.EditorFor HTML helper 方法来带来这个视图。

@model YourNameSpaceHere.AddUserRoleVM
<h2>Create User</h2>
@using (Html.BeginForm())
{
    <label>UserName : </label> @Html.TextBoxFor(s=>s.UserName)
    <label>Roles:</label>
    @Html.EditorFor(s=>s.Roles)
    <input type="submit"/>
}

现在,当您发布表单数据时,检查您发布的模型的 Roles 集合并验证每个项目的 IsSelected 属性。

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-02
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多