我正在使用新的Razore视图引擎更新旧的.aspx视图。我在很多地方都有这样的代码:
<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
就像应该渲染变量的值一样。
有人知道如何解决这些问题吗?
由于这是razor中的内联三元运算符的最高结果,因此我要补充一点,如果您的输出包含html或可编码字符(例如撇号),
—
NibblyPig
@(isSomething ? "class='test'" : "")
例如注入javascript或类似字符,它将把它们编码为诸如like的实体,'
并破坏页面。因此,您必须使用Html.Raw("..")
。否则,使用上面的代码,您将得到类似<p class='test'>
无效的东西。
@(puzzle.UserVote == VoteType.Up ? "-selected" : "")