古い.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>
ただし、ここには2つの問題があります。
vote-up@{puzzle.UserVote
....は@記号をコードブロックの開始として処理していません@puzzle.UserVote == VoteType.Up
は、変数の値をレンダリングすることになっているかのように、最初の部分@puzzle.UserVote
を調べます。誰もがこれらの問題に対処する方法を知っていますか?
これは動作するはずです:
<span class="vote-up@(puzzle.UserVote == VoteType.Up ? "-selected" : "")">Vote Up</span>
キーは、@区切り文字の後の括弧で式をカプセル化することです。このようにして、任意の複合式を機能させることができます。
@( condition ? "true" : "false" )
ほとんどの場合、 ソリューション of CD .. は完全に正常に動作します。しかし、私はもう少しねじれた状況がありました:
@(String.IsNullOrEmpty(Model.MaidenName) ? " " : Model.MaidenName)
これにより、「nbsp;」と表示されます。私のページで、それぞれソース&nbsp;
を生成します。これで、ソースコードを記述できるHtml.Raw(" ")
関数がありますが、このコンスタレーションではコンパイラエラーがスローされます。
コンパイラエラーメッセージ:CS0173: 'System.Web.IHtmlString'と 'string'の間に暗黙的な変換がないため、条件式の種類を特定できません
だから私は次のようなステートメントを書くことになりました。これはニースではありませんが、私の場合でも動作します:
@if (String.IsNullOrEmpty(Model.MaidenName)) { @Html.Raw(" ") } else { @Model.MaidenName }
注:おもしろいのは、中括弧内に入ったら、Razorブロックを再起動する必要があるということです。