Saya memperbarui pandangan .aspx lama saya dengan mesin tampilan Razore baru. Saya memiliki banyak tempat di mana saya memiliki kode seperti ini:
<span class="vote-up<%= puzzle.UserVote == VoteType.Up ? "-selected" : "" %>">Vote Up</span>
Idealnya saya ingin melakukan ini:
<span class="vote-up@{puzzle.UserVote == VoteType.Up ? "-selected" : ""}">Vote Up</span>
Namun ada dua masalah di sini:
vote-up@{puzzle.UserVote
.... tidak memperlakukan simbol @ sebagai awal dari blok kode@puzzle.UserVote == VoteType.Up
melihat bagian pertama@puzzle.UserVote
seolah-olah seharusnya membuat nilai variabel.
Adakah yang tahu cara mengatasi masalah ini?
@(puzzle.UserVote == VoteType.Up ? "-selected" : "")
@(isSomething ? "class='test'" : "")
misalnya menyuntikkan javascript atau sejenisnya, itu akan menyandikan mereka sebagai entitas seperti'
dan menghancurkan halaman. Jadi, Anda harus menggunakanHtml.Raw("..")
. Kalau tidak, dengan kode di atas Anda akan berakhir dengan sesuatu seperti<p class='test'>
yang tidak valid.Jawaban:
Ini seharusnya bekerja:
sumber
Kuncinya adalah untuk merangkum ekspresi dalam tanda kurung setelah pembatas @. Anda dapat membuat ekspresi majemuk apa pun bekerja dengan cara ini.
sumber
sumber
Dalam kebanyakan kasus solusi dari CD .. akan bekerja baik-baik saja. Namun saya memiliki situasi yang sedikit lebih bengkok:
Ini akan mencetak saya "& nbsp;" di halaman saya, masing-masing menghasilkan sumber
&nbsp;
. Sekarang ada fungsiHtml.Raw(" ")
yang seharusnya membuat Anda menulis kode sumber, kecuali dalam konstelasi ini ia membuat kesalahan kompilator:Jadi saya akhirnya menulis pernyataan seperti berikut, yang kurang bagus tetapi berfungsi bahkan dalam kasus saya:
Catatan: hal yang menarik adalah, begitu Anda berada di dalam kurung kurawal, Anda harus memulai ulang blok Razor.
sumber
@(String.IsNullOrEmpty(Model.MaidenName) ? Html.Raw(" ") : Model.MaidenName)
@(String.IsNullOrEmpty(Model.MaidenName) ? Html.Raw(" ") : Html.Raw(Model.MaidenName))