foreach (var in item) и исключение - PullRequest
0 голосов
/ 05 ноября 2019

Маленький вопрос,

В моем коде проекта c # mvc есть следующее:

div class="card-body">
                @if (User.IsInRole("Secretaris"))
                {
                <table class="table">
                    <tr>
                        <th>@Html.DisplayNameFor(model => model.FirstName)</th>
                    </tr>
                    @foreach (var item in Model)
                    {
                        if (User.IsInRole("Secretaris"))
                        {
                            <tr>
                                <td>@Html.DisplayFor(modelitem => item.FirstName)</td>
                            </tr>
                        }
                    }

                </table>
                }
            </div>

Когда я запускаю код, все работает нормально, но когда я вхожу в foreach, он все равно дает все имена, а не только имена, которые имеют роль «Secretaris». Надеюсь, что кто-то может помочь мне в том, что я делаю неправильно.

Заранее спасибо.

Рул Книппен

Ответы [ 3 ]

0 голосов
/ 05 ноября 2019

Поскольку ваше Model имеет свойство .Firstname, я предполагаю, что ваша модель представляет собой человека, скорее всего, пользователя.

@User представляет текущего пользователя, а не пользователя из вашей модели. Вам нужно будет включить информацию о роли в вашу модель, если вы хотите работать с пользователями / разрешениями в вашей модели. Что-то вроде

if (modelItem.Roles.Contains("Sec...")) { }
0 голосов
/ 05 ноября 2019
div class="card-body">
            @if (User.IsInRole("Secretaris"))
            {
            <table class="table">
                <tr>
                    <th>@Html.DisplayNameFor(model => model.FirstName)</th>
                </tr>
                @foreach (var item in Model)
                {
                    if (item.role == "Secretaris")
                    {
                        <tr>
                            <td>@Html.DisplayFor(modelitem => item.FirstName)</td>
                        </tr>
                    }
                }

            </table>
            }
        </div>

Может быть, что-то вроде этого, когда вы проверяете, является ли item.role секретарским?

0 голосов
/ 05 ноября 2019

Чтобы показать таблицу для начала, проверьте, есть ли у пользователя роль Secretaris. Таким образом, оно будет или не будет отображаться, в зависимости от этой роли.

Однако затем в цикле foreach вы проверяете, находится ли пользователь снова в этой роли, что является избыточным, поскольку этот код даже не будетвыполнить, если это не из-за вашего оператора if.

Я предполагаю, что вы хотите выполнить какую-то проверку для объекта "item", который является элементом модели.

...