2017-02-08 5 views
0

Ich habe ein Vb.net MVC-Projekt mit Einzelbenutzer-Authentifizierung. Administratoren können alle Benutzer auf der Seite "Manager-Benutzer" anzeigen, Benutzer werden in 3 verschiedene Rollen unterteilt: Admin, Mitarbeiter und Benutzer. Ich möchte, dass Admins in der Lage sind, Rollen zu fördern: Benutzer an Mitarbeiter oder Mitarbeiter an Admin und auch Herabstufung.MVC Identität ändern Benutzerrollen

Ich dachte daran, neben jedem Benutzer eine Schaltfläche hinzuzufügen, um entweder zu promoten oder zu degradieren. Ich habe Probleme damit, wie jeder Button mit jedem Benutzer verknüpft ist und wie ich diesen einen Benutzerwechsel zurück zum Controller schreiben würde.

Könnte jemand bitte raten, dank

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 

Ausblick: Ich bin alle Admin Anzeigen, Mitarbeiter und Benutzerrollen innerhalb der Ansicht, hier ist das Admin-Beispiel:

@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

Grundsätzlich müssen Sie dem Controller entsprechende Aktionsparameter als Schaltflächenklicks wie Benutzer-ID, Aktion (Heraufstufen, Herabstufen) senden. Und dann fügen Sie aus der entsprechenden Liste entfernen. Hoffe das hilft! – Amit

Antwort

0

Ich bleibe bei einer meist HTML-basierten Antwort, da meine VB rostig ist. Fühlen Sie sich frei, die entsprechenden HTML/URL-Helfer oder was auch immer Sie möchten, zu ersetzen.

Grundsätzlich können Sie einen von zwei Ansätzen nehmen:

  1. Haben Sie ein separates Formular für jede Taste. Das macht am meisten Sinn, wenn Sie auch separate Aktionen für jede Taste (dh Sie haben eine Promote Aktion und eine Demote Aktion auf dem Controller.

    <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. Eine Form mit den beiden „Förderung“ und „Herabstufen“ Tasten. Dies macht natürlich mehr Sinn, wenn man nur eine Wirkung haben, dass beide Prozesse behandelt

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

    da dann nur die Taste, die angeklickt wird, wird in den Postdaten enthalten sein, können Sie entsprechend in Ihrer Aktion verzweigen.

    If Request.Form["promote"] IsNot Nothing Then 
        'promote user 
    ElseIf Request.Form["demote"] IsNot Nothing Then 
        'demote user 
    EndIf 
    

Sie könnten auch ausgefallenere bekommen und AJAX verwenden, um dies zu handhaben, aber das sollte Sie gehen zu bekommen genug sein.

Verwandte Themen