Di manakah tempat terbaik (folder mana, dll.) Untuk meletakkan file javascript khusus tampilan dalam aplikasi ASP.NET MVC?
Untuk menjaga agar proyek saya tetap teratur, saya benar-benar ingin dapat menempatkannya berdampingan dengan file .aspx tampilan, tetapi saya belum menemukan cara yang baik untuk mereferensikannya ketika melakukan itu tanpa mengekspos ~ / Views / Tindakan / struktur folder. Apakah benar-benar buruk untuk membiarkan detail struktur folder tersebut bocor?
Alternatifnya adalah dengan meletakkannya di folder ~ / Scripts atau ~ / Content, tetapi sedikit mengganggu karena sekarang saya harus khawatir tentang bentrokan nama file. Namun, iritasi yang bisa saya atasi, jika itu adalah "hal yang benar".
asp.net-mvc
Erv Walter
sumber
sumber
Jawaban:
Pertanyaan lama, tetapi saya ingin memberikan jawaban saya jika ada orang lain yang datang mencarinya.
Saya juga ingin melihat file js / css tertentu di bawah folder views, dan inilah cara saya melakukannya:
Di folder web.config di root / Views Anda perlu memodifikasi dua bagian agar server web dapat melayani file:
Kemudian dari file view Anda, Anda dapat mereferensikan url seperti yang Anda harapkan:
Ini akan mengizinkan penyajian file .js dan .css, dan akan melarang penyajian file lainnya.
sumber
Salah satu cara untuk mencapai ini adalah dengan menyediakan milik Anda sendiri
ActionInvoker
. Menggunakan kode yang disertakan di bawah ini, Anda dapat menambahkan ke konstruktor pengontrol Anda:Sekarang, setiap kali Anda menempatkan
.js
file di samping tampilan Anda:Anda dapat mengaksesnya secara langsung:
Di bawah ini adalah sumbernya:
sumber
Anda dapat membalik saran davesw dan hanya memblokir .cshtml
sumber
Site.Master
. Memasukkan ke daftar putih tampaknya merupakan pendekatan yang lebih amanSaya tahu ini adalah topik yang agak lama, tetapi saya memiliki beberapa hal yang ingin saya tambahkan. Saya mencoba jawaban davesw tetapi menghasilkan kesalahan 500 ketika mencoba memuat file skrip, jadi saya harus menambahkan ini ke web.config:
ke system.webServer. Inilah yang saya miliki, dan saya bisa membuatnya berfungsi:
Berikut adalah informasi lebih lanjut tentang validasi: https://www.iis.net/configreference/system.webserver/validation
sumber
tambahkan kode ini di file web.config di dalam tag system.web
sumber
Saya juga ingin menempatkan file js yang terkait dengan tampilan di folder yang sama dengan tampilan.
Saya tidak bisa mendapatkan solusi lain di utas ini untuk berfungsi, bukan karena mereka rusak tetapi saya terlalu baru di MVC untuk membuatnya berfungsi.
Menggunakan informasi yang diberikan di sini dan beberapa tumpukan lainnya, saya menemukan solusi yang:
Catatan: Saya juga menggunakan HTTP Attribute Routing. Ada kemungkinan bahwa rute yang digunakan di soultion saya dapat dimodifikasi untuk bekerja tanpa mengaktifkan ini.
Diberikan contoh struktur direktori / file berikut:
Dengan menggunakan langkah-langkah konfigurasi yang diberikan di bawah ini, dikombinasikan dengan contoh struktur di atas, URL tampilan pengujian akan diakses melalui:
/Example/Test
dan file javascript akan direferensikan melalui:/Example/Scripts/test.js
Langkah 1 - Aktifkan Perutean Atribut:
Edit file /App_start/RouteConfig.vb Anda dan tambahkan
routes.MapMvcAttributeRoutes()
tepat di atas rute yang ada.Langkah 2 -Konfigurasi situs Anda untuk memperlakukan, dan memproses, /{controller}/Scripts/*.js sebagai jalur MVC dan bukan sumber daya statis
Edit file /Web.config Anda, tambahkan yang berikut ini ke bagian system.webServer -> handlers dari file:
Ini dia lagi dengan konteks:
Langkah 3 - Tambahkan hasil tindakan skrip berikut ke file Controller Anda
Anda perlu menyalin ini ke setiap file Controller Anda. Jika Anda ingin, mungkin ada cara untuk melakukan ini sebagai konfigurasi rute tunggal, satu kali, entah bagaimana.
Untuk konteksnya, ini adalah file ExampleController.vb saya:
Catatan Akhir Tidak ada yang istimewa tentang file javascript test.vbhtml view / test.js dan tidak ditampilkan di sini.
Saya menyimpan CSS saya dalam file tampilan tetapi Anda dapat dengan mudah menambahkan solusi ini sehingga Anda dapat mereferensikan file CSS Anda dengan cara yang sama.
sumber