MVC身份改变用户角色

时间:2017-02-08 11:09:26

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

我有一个带有单用户身份验证的Vb.net MVC项目。管理员可以查看“管理员用户”页面中的所有用户,用户分别分为3个不同的角色Admin,Employee和User。我希望管理员能够提升角色:用户到员工或员工到管理员,也可以降级。

我考虑过在每个用户旁边添加一个按钮来升级或降级。我正在努力解决每个按钮如何链接到每个用户以及如何将一个用户更改回控制器。

有人可以建议,谢谢

UserViewModels.vb

Public Class GroupedUserViewModel
   Public Property Users() As List(Of UserViewModel)
   Public Property Admins() As List(Of UserViewModel)
   Public Property Employee() As List(Of UserViewModel)
End Class

Public Class UserViewModel
   Public Property FullName() As String
   Public Property Email() As String
   Public Property RoleName() As String
End Class

查看: 我在视图中显示所有管理员,员工和用户角色,这是管理员示例:

@Modeltype GroupedUserViewModel

 @If Model.Admins.Any Then
    @:<div Class="Rtable Rtable--3cols Rtable--collapse">
        @For Each Admin In Model.Admins
            @:<div Class="Rtable-cell">
            @Admin.FullName
            @:</div>
            @:<div Class="Rtable-cell">
            @Admin.Email
            @:</div>
            @:<div Class="Rtable-cell">
            @Admin.RoleName
            @:</div>
        Next Admin
   @:</div>
End If

1 个答案:

答案 0 :(得分:0)

我将坚持使用基于HTML的答案,因为我的VB生锈了。您可以随意替换相应的HTML / URL帮助程序或任何您想要的帮助。

基本上,您可以采用以下两种方法之一:

  1. 每个按钮都有一个单独的表单。如果您对每个按钮也有单独的操作(即您的控制器上有Promote操作和Demote操作,则最有意义。

    <form action="/path/to/promote/action" method="post">
        <input type="hidden" name="userId" value="1" />
        <button type="submit">Promote</button>
    </form>
    <form action="/path/to/demote/action" method="post">
        <input type="hidden" name="userId" value="1" />
        <button type="submit">Demote</button>
    </form>
    
  2. 一个包含“Promote”和“Demote”按钮的表单。如果您只有一个可以处理这两个进程的操作,这显然更有意义。

    <form action="/path/to/role/change/action" method="post">
        <input type="hidden" name="userId" value="1" />
        <button type="submit" name="promote">Promote</button>
        <button type="submit" name="demote">Demote</button>
    </form>
    

    然后,由于只有点击的按钮将包含在帖子数据中,您可以相应地分支您的操作:

    If Request.Form["promote"] IsNot Nothing Then
        'promote user
    ElseIf Request.Form["demote"] IsNot Nothing Then
        'demote user
    EndIf
    
  3. 你也可以变得更加漂亮并使用AJAX来处理这个问题,但这应该足以让你前进。

相关问题