如何使用 ? :如果语句带有Razor和内联代码块

我用新的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> 

但是这里有两个问题:

  1. vote-up@{puzzle.UserVote ….不把@符号视为代码块的开始
  2. @puzzle.UserVote == VoteType.Up查看第一部分@puzzle.UserVote ,就好像它应该呈现variables的值。

任何人都知道如何解决这些问题?

这应该工作:

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

关键是将expression式封装在@分隔符后面的括号内。 你可以使任何复合expression式以这种方式工作。

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