Saya perlu membuat fungsi yang hanya diperlukan di dalam satu file cshtml. Anda dapat menganggap situasi saya sebagai metode halaman ASP.NET, yang merupakan layanan web minimal yang diterapkan dalam satu halaman, karena mereka mencakup satu halaman. Saya tahu tentang pembantu HTML (metode ekstensi), tetapi fungsi saya hanya diperlukan dalam satu file cshtml. Saya tidak tahu cara membuat tanda tangan fungsi di dalam tampilan. Catatan : Saya menggunakan mesin template Razor.
asp.net-mvc
asp.net-mvc-3
razor
Saeed Neamati
sumber
sumber
@functions
metode, jadi saya suka jawaban ini.mengapa tidak mendeklarasikan fungsi itu di dalam file cshtml?
sumber
functions
solusinya memberikan lebih banyak fleksibilitas untuk tipe return toher. Kedua jawaban mendapatkan +1 di buku saya karena keduanya adalah informasi berguna yang bermanfaat.<p>Welcome, @username.</p>
versusreturn new HtmlString("<p>Welcome, " + Html.Encode(username) + ".</p>");
.@helper
dalam satu tampilan tidak membuatnya tersedia untuk tampilan lain. alasan saya suka @helper lebih baik adalah Anda dapat menempatkan html di antara kurung kurawal Anda.@functions
tidak (dengan mudah) membiarkan Anda melakukan itu.@helper
dan@functions
dapat dibagikan di antara banyak tampilan, dan keduanya dapat dideklarasikan dan digunakan oleh satu tampilan (dan saya secara pribadi telah menemukan penggunaannya dalam kedua skenario bersama / tunggal). IMHO satu-satunya perbedaan praktis di antara mereka adalah kenyataan bahwa view helper menambahkan gula sintaksis untuk mengembalikan potongan HTML yang diberikan (atau, lebih tepat,HelperResult
instance), sementara fungsi tampilan biasanya hanya berguna untuk mengembalikan referensi sederhana atau tipe nilai.Jika metode Anda tidak harus mengembalikan html dan harus melakukan sesuatu yang lain maka Anda dapat menggunakan lambda alih-alih metode pembantu di Razor
sumber
Lihatlah Declarative Razor Helpers
sumber
Jika Anda ingin mengakses variabel global halaman Anda, Anda dapat melakukannya:
sumber
GetLoadingState()
di sini adalah fungsi lokal.