Атрибут show hide html, основанный на модели var в Razor - после символа «@» должен следовать допустимый блок кода - PullRequest
0 голосов
/ 28 сентября 2019

Я использую бритву, чтобы показать / скрыть содержимое страницы на основе переменных в модели:

     @if (Model.TicketShown == null)
        {
            @:<div id="ticket-section">
        } else {
            @:<div id="ticket-section" style="display:none">
        }

       //More Code

     @:</div>

Я уже некоторое время пользуюсь им, но сегодня я получаю сообщение об ошибке "@"следовать за правильным блоком кода 'только на закрывающем теге.Я использую синтаксис в другом месте, и он отлично работает.

Почему и есть ли более элегантный способ сделать это?Спасибо

1 Ответ

1 голос
/ 29 сентября 2019

@: предназначен для использования внутри блоков кода (см. Явный переход строки ), ваш @:</div> может не быть внутри одного.Вы можете использовать Html.Raw в качестве альтернативы (например, @Html.Raw("</div>")).

С помощью оператора ?: вы также можете переписать оператор if следующим образом:

<div id="ticket-section" style=@(Model.TicketShown == null ? "" : "display:none")>
    ...
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...