2011-01-22 6 views
123

新しいRazoreビューエンジンで古い.aspxビューを更新しています。私は、このようなコードを持っている場所の束がありますどうすれば使用できますか? :Razorとインラインコードブロックを使用したif文

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

を理想的には私がこれを行うにはしたいと思います:

  1. [email protected]{puzzle.UserVote

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

    は、しかし、ここで二つの問題があります。 ... @記号をコードブロックの開始点として扱っていません。

  2. @puzzle.UserVote == VoteType.Up最初の部分は@puzzle.UserVoteのように見えます変数の値をレンダリングするはずです。

誰もがこのような問題に対処する方法を知っていますか?

+6

私はRazorを使用していませんが、私が見ているものに基づいて、@(puzzle.UserVote == VoteType.Up? "-selected": "") ' –

答えて

239

これは動作するはずです:

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

を使ってみてください。括弧 –

29

キーは、@区切り文字の後の括弧内の式をカプセル化することです。このように複合式を作成することができます。

8
@(condition ? "true" : "false") 
+1

私はこの1つに行きました、きれいな感じで後で読み返しやすいです –

+1

ToString()を呼び出すのではなく、プロパティの値を表示する必要がある場合 - 私の場合は動作しませんでした。これを@(条件?$ "{foo.bar}": "デフォルト")することができます –

1

ほとんどの場合、the solutionCD..は完全に正常に動作します。しかし、私はもう少しねじれた状況だった:

@(String.IsNullOrEmpty(Model.MaidenName) ? "&nbsp;" : Model.MaidenName) 

これは私を印刷しを「& NBSP;」私のページでは、それぞれソース&amp;nbsp;を生成します。

Compiler Error Message: CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between 'System.Web.IHtmlString' and 'string'

は、だから私は、次のような文を書くことになった、あまりいいが作品です。今ではコンパイラエラーをスローしますが、この星座を除いて、ソースコードを記述できるようになっている機能 Html.Raw("&nbsp;")あり私の場合でも:

注:面白いことに、中括弧の中に入ったら、Razorブロックを再起動する必要があります。

関連する問題