Как использовать?: если инструкции с блоками Razor и встроенным кодом

Я обновляю свои старые .aspx-представления с помощью нового механизма просмотра Razore. У меня есть куча мест, где у меня есть такой код:

<span class="vote-up<%= puzzle.UserVote == VoteType.Up ? "-selected" : "" %>">Vote Up</span>

В идеале я хотел бы сделать это:

<span class="[email protected]{puzzle.UserVote == VoteType.Up ? "-selected" : ""}">Vote Up</span>

Однако здесь есть две проблемы:

  • [email protected]{puzzle.UserVote.... не обрабатывает символ @как начало кодового блока
  • @puzzle.UserVote == VoteType.Up смотрит на первую часть @puzzle.UserVote, как будто она должна отображать значение переменной.

Кто-нибудь знает, как решить эти проблемы?

Ответ 1

Это должно работать:

<span class="[email protected](puzzle.UserVote == VoteType.Up ? "-selected" : "")">Vote Up</span>

Ответ 2

Ключ состоит в том, чтобы инкапсулировать выражение в круглых скобках после разделителя @. Вы можете заставить любое составное выражение работать таким образом.

Ответ 3

@( condition ? "true" : "false" )