Saya percaya semua orang telah mencoba menggunakan JavaScript dalam sebuah tampilan, dan Anda dapat secara langsung menggunakan sintaksis pisau cukur untuk memanggil beberapa metode .net. Karena kode berikut bersarang dalam tampilan pisau cukur:
<script> var currdate = '@datetime.now'; // Langsung panggil metode .net console.log (Currdate) </script>
Tetapi situasi lain adalah bahwa jika saya ingin menggunakan pisau cukur dalam file JS terpisah, metode di atas tidak akan berfungsi, karena MVC tidak akan secara langsung menafsirkan file JS, dan itu hanya dapat dimasukkan ke dalam tampilan pisau cukur. Namun, di sini saya merekomendasikan perpustakaan pihak ketiga kepada Anda, yang memungkinkan Anda menggunakan pisau cukur langsung di file JS independen
Nama perpustakaan ini adalah Razorjs. Ini adalah proyek open source. Anda dapat mengunduh kode sumber dari alamat berikut:
https://bitbucket.org/djsolid/razorjs
Atau Anda dapat menginstalnya langsung melalui Nuget:
PM> instal-package razorjs
Oke, mari kita bicara tentang apa yang bisa dibawa perpustakaan ini kepada kami terlebih dahulu. Setelah instalasi, Anda dapat secara langsung menggunakan semua metode yang didukung .NET dalam file JS. Misalnya, kode di atas dapat langsung ditempatkan dalam file JS independen untuk digunakan. Selain itu, Anda juga dapat merujuk ke namespace lengkap .net dalam file JS. Jika Anda ingin memanggil objek file untuk membaca konten file teks, Anda dapat secara langsung merujuk ke namespace System.io:
@Using system.io; var s = 'halo at @datetime.now /n @file.readalltext (system.web.hostting.hostingenvironment.mappath ("~ /web.config")))';Setelah berjalan, Anda bisa langsung mendapatkan semua konten dalam file web.config di JS. Terlihat cukup bagus, haha. Jadi bagaimana tepatnya jenis perpustakaan ini bekerja? Bahkan, ia menggunakan perpustakaan kelas yang disebut Razorengine untuk mencapai efek di atas. Razorengine adalah mesin penjelasan pisau cukur yang sangat kuat dan saya telah menggunakannya di beberapa proyek sebelumnya. Melalui mesin ini, Anda bahkan dapat menggunakan sintaksis pisau cukur secara langsung dalam bentuk win. Haha, saya ingin tahu apakah Anda tahu manfaatnya?
Nah, bagus, dengan mesin ini, Anda dapat menggunakan pisau cukur MVC di lingkungan web yang sepenuhnya independen. Fungsi ini memungkinkan Anda untuk membuat beberapa templat yang fleksibel dengan sangat nyaman, seperti beberapa templat email. Anda dapat secara langsung menggunakan berbagai metode .NET atau bahkan objek khusus dalam templat, dan kemudian secara dinamis menghasilkan konten yang diinginkan. Oke, tapi mesin ini bukan yang ingin saya perkenalkan kali ini, saya hanya membicarakannya di sini
Selanjutnya, mari kita bicara tentang penggunaan Razorjs. Jika Anda menginstalnya secara langsung melalui NUGET, Anda akan secara otomatis mengonfigurasi Web.config untuk Anda. Ini adalah metode instalasi yang disarankan. Jika tidak, Anda harus menambahkan konfigurasi di web.config sendiri. Ada beberapa tempat, dan saya tidak akan merinci di sini. Anda dapat membandingkannya setelah menginstalnya. Ini juga sangat mudah untuk menggunakan razorjs, cukup lihat file JS yang Anda inginkan menggunakan sintaks berikut:
<p> @html.razorjsinline ("~/scripts/example.js") </p>Namun, satu hal yang perlu diperhatikan adalah bahwa akan ada direktori di web Anda. Config yang memungkinkan Razorjs untuk digunakan, yaitu, file JS Anda harus ditempatkan di direktori ini sebelum Anda dapat menggunakan metode ini untuk referensi:
<razorjssettings handlerpath = "~/razorjs.axd"> <lmentpaths> <dild path = "~/skrip"/> </apledpaths> </razorjssettings>
Hal terakhir yang ingin saya bicarakan adalah keterbatasannya. Ada hal -hal baik dan sisi buruk. Karena menggunakan Razorengine, Anda tidak dapat menggunakan metode HTML Helper MVC di JS, yaitu, semua metode dimulai dengan @html. Masalah lain adalah tidak dapat mengenali kode komentar di JS. Artinya, jika Anda menggunakan metode .NET di komentar, itu juga akan dieksekusi. Jika metode Anda benar, tidak akan ada masalah. Jika tidak, eksekusi JS akan terganggu dan kesalahan akan dilaporkan secara langsung. Jadi jangan berpikir bahwa metode yang tidak berguna sudah cukup untuk berkomentar.
Mengenai masalah tidak dapat mengeksekusi @html helper, saya memberikan solusi lain di sini, tetapi ini memungkinkan Anda untuk memodifikasi kode sumbernya. Teman yang ingin melemparkan bisa mencobanya. Bahkan, Anda dapat menggunakan banyak metode khusus untuk melakukan ini, yang lebih fleksibel dan nyaman. Setelah mengunduh kode sumber RazorJS, Anda dapat secara langsung memodifikasinya dan mengkompilasi ulang DLL. Cara lain adalah dengan menggunakan kode sumbernya sebagai proyek lain dan langsung menambahkannya ke proyek Anda sendiri.
Dalam kode sumbernya, buka file htmltemplateBase.cs, dan Anda dapat menambahkan metode Anda sendiri di sini, dan kemudian semua metode yang ditambahkan di sini dapat dipanggil langsung di JS. Jika Anda dapat menemukan metode HREF yang dienkapsulasi dalam kode sumber, Anda dapat mengonversi URL ke URL yang tersedia pada klien yang meminta. Menurut metode penulisan ini, kami dapat menambahkan metode kami sendiri, seperti berikut adalah metode saya untuk merangkum file sumber daya internasional secara dinamis, sehingga kami dapat secara langsung menggunakan file sumber daya .NET di JS untuk internasionalisasi:
Kelas Publik HTMLTemplateBase: TemplateBase {// Secara manual hubungi manajer file sumber daya private static resourceManager Resources = (ResourceManager) System.type.getType ("razorjs.resource"). GetProperty ("ResourceManager"). GetValue (Null, Null); htmltemplateBase publik () {url = Urlhelper baru (httpcontext.current.Request.RequestContext); } public string href (String igherUrl) {return extensions.resolveUrl (originalUrl); } public String getlangText (string langkey) {return bahasa terkait berdasarkan kunci pengembalian sumber daya.getString (langkey); } Urlhelper URL publik {get; mengatur; }}Kemudian panggil langsung di JS:
var s = '@getlangText ("coderblog")'; console.log (s);Setelah berjalan, Anda dapat langsung memasukkan konten kunci Coderblog di JS.