【发布时间】:2011-06-13 19:48:13
【问题描述】:
我正在使用新的 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,但根据我所看到的,试试
@(puzzle.UserVote == VoteType.Up ? "-selected" : "") -
由于这是 razor 中内联三元运算符的最佳结果,我将补充一点,如果您的输出包含 html 或撇号等可编码字符,例如
@(isSomething ? "class='test'" : "")例如注入 javascript 或类似的,它会将它们编码为像&#39;这样的实体并打破页面。所以你必须使用Html.Raw("..")。否则,使用上面的代码,你最终会得到类似<p class=&#39;test&#39;>的东西,这是无效的。
标签: asp.net asp.net-mvc asp.net-mvc-3 syntax razor