Asp.net mvc MVC身份更改用户角色

Asp.net mvc MVC身份更改用户角色,asp.net-mvc,vb.net,asp.net-mvc-4,Asp.net Mvc,Vb.net,Asp.net Mvc 4,我有一个带有单用户身份验证的Vb.net MVC项目。管理员可以在“管理者用户”页面中查看所有用户,用户分别分为3个不同的角色:管理员、员工和用户。我希望管理员能够提升角色:用户到员工或员工到管理员,以及降级 我考虑在每个用户旁边添加一个按钮来升级或降级。我很难确定每个按钮如何链接到每个用户,以及如何将一个用户的更改发布回控制器 <form action="/path/to/promote/action" method="post"> <input type="hidd

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

我考虑在每个用户旁边添加一个按钮来升级或降级。我很难确定每个按钮如何链接到每个用户,以及如何将一个用户的更改发布回控制器

<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>
有人能给点建议吗,谢谢

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
@Modeltype GroupedUserViewModel
@如果Model.Admins.Any,则
@:
@对于Model.Admins中的每个管理员
@:
@Admin.FullName
@:
@:
@管理员电子邮件
@:
@:
@罗莱曼管理员
@:
下一个管理员
@:
如果结束

我将坚持使用基于HTML的答案,因为我的VB已经生锈了。请随意替换适当的HTML/URL帮助程序或任何您想要的内容

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

  • 每个按钮都有一个单独的表单。如果每个按钮都有单独的操作(即,控制器上有
    升级
    操作和
    降级
    操作),则这一点最有意义

    <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>
    

  • 您也可以使用fancier和AJAX来处理此问题,但这应该足以让您继续。

    基本上,您需要通过单击按钮将相应的操作参数发送到控制器,如用户id、操作(升级、降级)。然后从相应的列表中添加或删除。希望这有帮助!
    If Request.Form["promote"] IsNot Nothing Then
        'promote user
    ElseIf Request.Form["demote"] IsNot Nothing Then
        'demote user
    EndIf