ActionLink в if-заявлении не отображается - PullRequest
2 голосов
/ 10 сентября 2011

У меня странная проблема, когда ActionLink не отображается. У меня есть этот код на мой взгляд:

@if (User.IsInRole("Allow Create")) {
    Html.ActionLink("Add a new item", "Create");
}

Я подумал, что, возможно, мои роли и права доступа не были установлены правильно, но я прошел отладчик, и, конечно, оператор if успешно выполняется. Достигается код для создания ссылки действия, ошибок нет.

Но при загрузке страницы ссылка отсутствует. Это не скрыто или что-либо еще, это не в источнике вообще.

Кто-нибудь знает, что я здесь не так делаю?

1 Ответ

7 голосов
/ 10 сентября 2011

вам нужны дополнительные @

@if (User.IsInRole("Allow Create")) {
    @Html.ActionLink("Add a new item", "Create");
}

Что касается объяснения: @if (User.IsInRole("Allow Create")) { помещает вас в блок кода, и цифры бритвы, которые вы просто вызываете Html.ActionLink(..), как если бы вы быливызывая функцию, не заботясь о возвращаемом результате.Поскольку вы действительно хотите вывести результат Html.ActionLink в виде html, вы смешиваете код и текст, для которого вам нужен префикс @.

Просто для иллюстрации, следующий результат будет иметь тот же результат, что икод выше:

@if (User.IsInRole("Allow Create")) {
    var url = Html.ActionLink("Add a new item", "Create");
    @url;
}

Вот хороший Краткое руководство

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...