2017-02-08 11 views
0

У меня есть проект MVC MVC с однопользовательской аутентификацией. Админы могут просматривать всех пользователей на странице «пользователи-пользователи», пользователи разделены на 3 разных роли Admin, Employee и User соответственно. Я хочу, чтобы админы могли рекламировать роли: «Пользователи для сотрудников или сотрудников для администратора», а также «понижать».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

В основном вам необходимо отправить соответствующие параметры действия контроллеру в виде щелчков на кнопках, таких как идентификатор пользователя, действие (продвигать, понижать). А затем добавьте удаление из соответствующего списка. Надеюсь это поможет! – 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 справиться с этим, но это должно быть достаточно, чтобы ты.