1. Pengenalan Masalah Selama proses pengembangan website VS2005, penerbitan website selalu menjadi masalah. Website yang dibuat oleh VS2005 memiliki beberapa direktori default: App_Code, App_Data, App_Themes...
Jika itu adalah file cs/vb, seperti kelas UploadFile.cs UploadFile, file kelas ini tidak memiliki file aspx yang terlihat, maka file ini harus ditempatkan di direktori App_Code, jika tidak, kelas ini tidak dapat diakses di situs web VS2005 Taruh saja, tapi saat kompilasi (VS2005 saya versi Tim, generasi tidak merespons. Rasanya seperti memeriksa kode lagi, dan hanya dapat menggunakan situs penerbitan untuk melakukan prakompilasi. Saya tidak tahu seperti apa versi lainnya. .) Masalah muncul. Setelah memilih situs penerbitan, Anda dapat memilih cara mempublikasikan. Umumnya, Anda dapat memilih default. Dengan begitu, jumlah dll yang dihasilkan akan lebih kecil setelah dipublikasikan , App_Code.dll di direktori bin App_Web_ (karakter acak).dll, referensi dll dan file lainnya. Masalahnya terletak di sini. Jika Anda ingin membuat program bebas virtualisasi, bukankah mungkin dua App_Code.dll perlu ditempatkan di direktori bin? Apakah tidak akan ada konflik? Selain itu, jika program berubah satu kali dan perlu dipublikasikan ulang, itu saja. Lihatlah hal-hal baik yang telah dilakukan VS2005. mewarisi="MyCodeGif, App_Web_vf3ukhnv" awalnya adalah file MyCodeGif.aspx dan file MyCodeGif.aspx.cs. Sekarang file MyCodeGif.aspx mewarisi dari MyCodeGif, App_Web_vf3ukhnv. cs.App_Web_vf3ukhnv adalah nama file dll di folder bin. Jika Anda mencoba mempublikasikannya lagi, akan muncul pertanyaan yang lebih merepotkan. Mengapa halaman MyCodeGif.aspx diwarisi dari MyCodeGif, App_Web_qwdwqd? Nama Majelis yang dikompilasi berbeda!
2. Hubungan antara halaman dan kelas di ASP.Net
Di ASP.Net, halaman dapat diwarisi dari kelas dan dapat memiliki banyak warisan. Misalnya
File halaman MyCodeGif.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>MyCodeGif.aspx.cs seperti ini
menggunakan Sistem;
menggunakan Sistem.Data;
menggunakan Sistem.Konfigurasi;
menggunakan Sistem.Koleksi;
menggunakan Sistem.Web;
menggunakan Sistem.Web.Keamanan;
menggunakan Sistem.Web.UI;
menggunakan Sistem.Web.UI.WebControls;
menggunakan System.Web.UI.WebControls.WebParts;
menggunakan Sistem.Web.UI.HtmlControls;
menggunakan FreeCodeNum
kelas parsial publik MyCodeGif : System.Web.UI.Page
{
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e)
{
//.....logika
}
}
Terlihat halaman MyCodeGif.aspx mewarisi dari kelas MyCodeGif
dan juga dapat diwarisi dengan cara ini
File halaman MyCodeGif.aspx
<%@ Halaman Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>
Seperti inilah tampilan MyCodeGif.aspx.cs
menggunakan Sistem;
menggunakan Sistem.Data;
menggunakan Sistem.Konfigurasi;
menggunakan Sistem.Koleksi;
menggunakan Sistem.Web;
menggunakan Sistem.Web.Keamanan;
menggunakan Sistem.Web.UI;
menggunakan Sistem.Web.UI.WebControls;
menggunakan System.Web.UI.WebControls.WebParts;
menggunakan Sistem.Web.UI.HtmlControls;
menggunakan FreeCodeNum
kelas parsial publik MyCodeGif : PageBase
{
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e)
{
//.....logika
}
}
PageBase.cs seperti ini
menggunakan Sistem;
menggunakan Sistem.Web;
menggunakan Sistem.Koleksi;
/**//// <ringkasan>
/// Ringkasan deskripsi PageBase
/// </ringkasan>
kelas publik PageBase : System.Web.UI.Page
{
publikPageBase()
{
}
}
Seperti file halaman MyCodeGif.aspx saya, saya bahkan bisa
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="PageBase" %>Artinya, halaman tersebut secara langsung mewarisi dari kelas PageBase.
Kesimpulan: Halaman ASP.Net dapat mewarisi dari subkelas yang diperluas [Diwarisi dari kelas induk kelas System.Web.UI.Page].
3. Solusi: Anda juga dapat menyesuaikan nama Majelis di VS2005 - yaitu, saat membuat waktu Proyek , bukan waktu situs web. Dengan kata lain, setelah website yang Anda buat selesai ditulis, Anda dapat membuat ulang sebuah proyek dan kemudian mengkompilasi ulang kode website tersebut. Anda mungkin perlu mengubah warisan file aspx setelah menyelesaikannya, tetapi Anda mungkin tidak perlu mengubahnya, itu tergantung bagaimana Anda menyimpannya, karena warisan file aspx hanya terkait dengan nama kelas (jika ada namespace, namespace juga harus ditentukan). File halaman MyCodeGif.aspx dapat diubah menjadi
<%@ Halaman Bahasa="C#" AutoEventWireup="benar" Inherits="PageBase" %>
Hapus CodeFile="MyCodeGif.aspx.cs" di dalamnya.
Dengan cara ini, website dapat dipublikasikan dengan cara yang sama seperti VS2003. Prosesnya mungkin agak rumit, tapi menurut saya ini cukup berguna untuk pemeliharaan nanti. Lagi pula, saya sudah terbiasa dengan VS2003 dan saya bisa melakukan program bebas virtualisasi yang sama seperti tahun 2003.
Teks lengkap. Semoga dapat bermanfaat bagi semuanya.
Penulis: Xie Ping, Sunset Track 27-5-2006