2017-02-08 94 views
0

我有一个单用户身份验证的Vb.net MVC项目。管理员可以查看“经理用户”页面中的所有用户,用户分别分为3个不同的角色管理员,员工和用户。我希望管理员能够促进角色:用户到员工或员工到管理员,并且也会降级。MVC身份更改用户角色

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

可能有人请指教,谢谢

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

基本上你需要发送相应的动作参数给控制器,如按钮点击,如用户ID,动作(提升,降级)。然后添加从相应列表中删除。希望这可以帮助! – Amit

回答

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. 一种形式。这显然更有意义,如果你只有一个动作,将处理这两个过程

    <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 
    

你也可以更加爱好并使用AJAX来处理这个问题,但这应该足以让你走了。

相关问题