Baru -baru ini, saya berencana untuk mencoba mengimplementasikan arsitektur MVC di ASP. Seseorang pasti bertanya kepada saya: ASP telah dihilangkan, mengapa saya masih mempelajarinya? Saya juga tahu ini. Sejak Microsoft meninggalkan ASP 3.0 dan beralih ke ASP.NET, ASP telah tertinggal jauh di belakang PHP dan JSP yang dimulai hampir pada saat yang sama. Manfaat open source daripada sumber tertutup sama seperti PHP dan ASP. ASP mengatakan itu akan dihilangkan dan tidak ada yang bisa menyimpannya. Namun, perlu dicatat bahwa ASP cukup luas di pasar Cina, terutama beberapa aplikasi dari beberapa perusahaan kecil dan menengah. CMS sederhana tidak masalah dan mudah digunakan. Pada beberapa sistem Windows yang lama, tidak memerlukan pemasangan .NET Framework untuk berjalan secara langsung, sehingga masih perlu untuk menyiapkan kerangka kerja. Namun, ini adalah kerangka kerja eksperimental, yang hanya untuk memverifikasi apakah ASP dapat mengimplementasikan arsitektur MVC yang mirip dengan PHP.
Oke, setelah mengatakan begitu banyak, mari kita beralih ke topik. Alasan untuk masalah ini adalah saya perlu memasukkan file ASP secara dinamis. Seperti yang Anda ketahui, hanya ada satu termasuk metode dalam ASP, yaitu SSI (sisi server termasuk), yang pada dasarnya dibagi menjadi dua jenis berikut:
Salinan kode adalah sebagai berikut:
<!-#include file = "sample.asp"->
<!-#include virtual = "sample.asp"->
Pada dasarnya, yang pertama untuk kedua jenis ini digunakan lebih banyak. #include virtual berisi jalur virtual, yang dapat digunakan dalam direktori virtual. Tetapi keduanya statis. Jika kita ingin memasukkan secara dinamis, kita tidak dapat menulisnya sebagai:
Salinan kode adalah sebagai berikut:
<!-#include file = "<%= myvar%>"->
<!-#include virtual = "<%= myvar%>"->
Metode penulisan di atas salah. Dapat dipahami bahwa arahan #include dieksekusi sebelum ASP memulai mesin skrip untuk menjalankan tag ASP < % %>. Dengan kata lain, #include bukanlah karya ASP, tetapi program sisi server, seperti pekerjaan terjemahan IIS, jadi Anda tidak akan memperhatikan kode ASP Anda.
Bagaimana cara mengimplementasikan termasuk, memasukkan_once, membutuhkan, dan memerlukan_once secara dinamis menyertakan metode skrip yang mirip dengan PHP? Mari kita lihat metode Objek Server ASP: Server.Execute. Cari semua fitur ASP dan Anda dapat menemukan bahwa fungsi ini paling mirip dengan disertakan dinamis. Kita bisa melakukan percobaan:
Sampel.inc.asp
Salinan kode adalah sebagai berikut:
<%
Response.write "Halo Dunia!"
%>
test.asp
Salinan kode adalah sebagai berikut:
<%
Server.eksekutasi "sampel.inc.asp"
Response.write "I am test.asp!"
%>
Output yang sebenarnya harus "halo dunia! Saya test.asp!", Menunjukkan bahwa server.Execute bekerja dengan baik dalam inklusi dinamis, tetapi bagaimana jika saya ingin memasukkan kelas atau fungsi? Selanjutnya, lakukan percobaan berikut:
Sampel.class.asp
Salinan kode adalah sebagai berikut:
<%
Sampel kelas
Kelas akhir
%>
test.asp
Salinan kode adalah sebagai berikut:
<%
Server.eksecute "sample.class.asp"
Response.write typename (eval ("sampel baru"))
%>
Jalankan langsung, kesalahan "Kelas kesalahan runtime Microsoft VBScript '800A01FA' tidak didefinisikan: 'sampel'", hasilnya sangat mengecewakan, mengapa ini terjadi? Saya mencari MSDN dan menemukan deskripsi ini: "Jika sebuah file termasuk dalam halaman panggilan dengan menggunakan #include, yang dieksekusi .asp tidak akan menggunakannya. Misalnya, Anda mungkin memiliki subrutin dalam file yang termasuk dalam halaman panggilan Anda, tetapi yang dieksekusi .asp tidak akan mengenali nama subrutin." Tampaknya sedikit berbeda dari masalah yang saya temui. Apakah server.Eksecute kode yang diisolasi? Kemudian lakukan percobaan berikut: