Я обновляю свои старые представления .aspx новым движком представления Razore. У меня есть несколько мест, где у меня есть такой код:
<span class="vote-up<%= puzzle.UserVote == VoteType.Up ? "-selected" : "" %>">Vote Up</span>
В идеале я хотел бы сделать это:
<span class="vote-up@{puzzle.UserVote == VoteType.Up ? "-selected" : ""}">Vote Up</span>
Однако здесь есть две проблемы:
vote-up@{puzzle.UserVote
.... не рассматривает символ @ как начало блока кода@puzzle.UserVote == VoteType.Up
смотрит на первую часть так,@puzzle.UserVote
как будто она должна отображать значение переменной.
Кто-нибудь знает, как решить эти проблемы?
@(puzzle.UserVote == VoteType.Up ? "-selected" : "")
@(isSomething ? "class='test'" : "")
javascript или аналогичного, он будет кодировать их как объекты, подобные разрывам'
страницы. Так что вы должны использоватьHtml.Raw("..")
. В противном случае с приведенным выше кодом вы получите что-то вроде,<p class='test'>
что недопустимо.Ответы:
Это должно работать:
источник
Ключ заключается в том, чтобы заключить выражение в круглые скобки после @ delimiter. Вы можете заставить любое сложное выражение работать таким образом.
источник
источник
В большинстве случаев решение о CD .. будет работать прекрасно. Однако у меня была немного более запутанная ситуация:
Это напечатало бы меня "& nbsp;" на моей странице соответственно сгенерируйте источник
&nbsp;
. Теперь есть функция,Html.Raw(" ")
которая должна позволять вам писать исходный код, за исключением того, что в этом созвездии она выдает ошибку компилятора:Таким образом, я закончил тем, что написал следующее заявление, которое не так приятно, но работает даже в моем случае:
Примечание: интересно то, что, попав в фигурную скобку, вы должны перезапустить блок Razor.
источник
@(String.IsNullOrEmpty(Model.MaidenName) ? Html.Raw(" ") : Model.MaidenName)
@(String.IsNullOrEmpty(Model.MaidenName) ? Html.Raw(" ") : Html.Raw(Model.MaidenName))