Dengan RazorViewEngine, saya bisa melakukan ini:
if (somecondition) {
<div> some stuff </div>
}
tapi sepertinya saya tidak bisa melakukan ini (Razor menjadi bingung):
if (somecondition) {
<div>
}
if (someothercondition) {
</div>
}
Saya mengalami situasi di mana saya harus meletakkan tag html pembuka dan penutup saya di blok kode yang berbeda - bagaimana saya bisa melakukan ini di Razor?
asp.net-mvc-3
razor
sydneyos
sumber
sumber
<text><div></text>
- haacked.com/archive/2011/01/06/...<text><div></text>
bekerja, tetapi<text></div></text>
tidak.Untuk menjelaskan jawaban Darwin, yaitu mengawali HTML seperti ini:
@: dalam Razor berarti 'menjadikan sesuatu sebagai teks biasa'
atau Anda dapat menggunakan ini, yang menghasilkan HTML seperti yang Anda tulis sebelumnya (ini juga dapat digunakan untuk menghindari pengkodean HTML otomatis yang dilakukan Razor jika Anda mencoba mengeluarkan HTML):
(Referensi Html.Raw dari MS - http://msdn.microsoft.com/en-us/library/gg568896(v=vs.111).aspx )
sumber
@:<a href="@link" class="@classNames">@text</a>
@Html.Raw()
- lihat pos SO terkaitAnda dapat membuat metode Pembantu MVC khusus. Untuk dengan Anda membuat kelas MyRenderHelpers publik statis di namespace
System.Web.Mvc.Html
dan menulis metode Html.Sekarang Anda dapat menggunakan metode ekstensi ini dalam tampilan pisau cukur Anda:
sumber
Fakta bahwa Anda harus melakukan ini biasanya menunjukkan bahwa kode tampilan Anda tidak difaktorkan dengan benar. Sifat HTML adalah memiliki tag yang seimbang atau tertutup sendiri (setidaknya di HTML 4, HTML 5 tampaknya menjauh darinya) dan Razor bergantung pada asumsi itu. Jika Anda akan meng-ouptut secara kondisional
<div>
maka Anda juga akan keluaran di suatu tempat nanti</div>
. Masukkan saja pasangan whoel dalamif
pernyataan Anda :Jika tidak, Anda akan berakhir dengan kode aneh seperti di sini .
sumber
@:
atau<text></text>
if (somecondition) { @:</div> }
<link>
tag.