Показать все элементы для пользователя с ролью администратора - PullRequest
1 голос
/ 19 октября 2019

Я создаю приложение справочной службы, используя C # MVC. У меня есть вид «Билет». В моей модели Ticket у меня есть свойство RaisedBy. Я был в состоянии применить некоторую логику, чтобы показать зарегистрированному пользователю свои билеты. Следующим шагом я хотел бы показать все тикеты пользователю с ролью 'admin'

. Я создал цикл foreach, чтобы возвращать все элементы и складывать их в таблицу. Вот то, что я попробовал так в моем представлении:

@foreach (var item in Model) {
if (item.RaisedBy == User.Identity.Name) { 
    if(item.RaisedBy == User.IsInRole ="Admin")

Это дает мне ошибку:

Operator '==' cannot be applied to operands of type 'string' and 'method-group'

Я также пробовал:

@foreach (var item in Model) {
{
    if (item.RaisedBy = User.IsInRole("Admin")  { 

Что дает:

Cannot implicitly convert type 'bool' to 'string'

Я не очень разбираюсь в C #, поэтому любые указания или предложения будут очень признательны.

Ответы [ 2 ]

1 голос
/ 19 октября 2019

User.IsInRole действует на текущего зарегистрированного пользователя и является методом. Возвращает bool.

Вы используете неправильный синтаксис здесь: if (item.RaisedBy = User.IsInRole("Admin")). Это должно быть if (User.IsInRole("Admin")).

Как только вы подтвердите, что item.RaisedBy соответствует текущему пользователю, вам просто нужно проверить, есть ли у текущего пользователя роль администратора.

@foreach (var item in Model) 
{
    // if item.RaisedBy is current user
    if (item.RaisedBy == User.Identity.Name)
    { 
        // if current user is in "admin" role
        if(User.IsInRole("Admin"))
        {
        }
    }
}
1 голос
/ 19 октября 2019

Вы не используете сравнение на равенство ==. Используя =, вы назначаете правую переменную слева.

Ваш цикл должен быть:

@foreach (var item in Model) {
if (item.RaisedBy == User.Identity.Name) { 
    if (User.IsInRole("Admin"))
        // Other code..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...