ASP.NET 2.0 menambahkan dukungan MasterPage bawaan, yang sangat memudahkan kami. Namun, setelah menggunakannya untuk jangka waktu tertentu, saya menemukan bahwa MasterPage tidak begitu sempurna: MasterPage yang disarangkan tidak dapat mendukung antarmuka waktu desain, dan masalah penambahan CSS ke Halaman Konten akan disebutkan di bawah.
Biasanya, sebelum versi 2.0, sintaks untuk menambahkan referensi CSS ke halaman adalah sebagai berikut:
<link rel="stylesheet" href="css/test.css" />
Ini awalnya merupakan praktik umum. Namun di sub-halaman MasterPage, muncul situasi yang sangat memalukan: di mana kita harus meletakkan kode di atas?
Karena pada halaman konten spesifik MasterPage, hanya konten dari setiap tag <asp:Content /> yang dapat ditentukan. Menurut praktik yang biasa, kita tidak dapat mengontrol konten <header/> halaman di aspx. Dan tag <link/> ini harus ditempatkan di dalam <header/>. Saya telah mencoba menambahkan baris kode ini di dalam <asp:Content />, tetapi akan menimbulkan kesalahan.
Pada saat yang sama, kami tidak dapat menempatkan ContentPlaceHolder di dalam <header/> MasterPage untuk kode referensi CSS di masa mendatang.
Jadi yang saya lakukan adalah mendefinisikan kelas pembantu sebagai berikut:
kelas publik statis ControlHelper
{
static public void AddStyleSheet(Halaman halaman, string cssPath)
{
Tautan HtmlLink = HtmlLink baru();
tautan.Href = cssPath;
link.Attributes["rel"] = "stylesheet";
link.Attributes["type"] = "teks/css";
halaman.Header.Controls.Add(link);
}
}
Dengan cara ini, pada halaman tertentu, kita dapat menambahkan referensi CSS melalui kode berikut:
protected void Page_Load(pengirim objek, EventArgs e)
{
ControlHelper.AddStyleSheet(halaman ini, "css/projectPage.css");
}
Selain itu, kode ini mendukung penggunaan di halaman konten tertentu atau Halaman Master yang disarangkan.
Pada titik ini, beberapa orang mungkin bertanya, mengapa CSS harus dipisahkan dan dimuat seperti ini? Apakah itu perlu? Bukankah lebih baik jika saya mendefinisikan CSS untuk semua halaman ke dalam beberapa file CSS umum?
Faktanya, teman-teman yang akrab dengan produksi HTML standar web pasti tahu bahwa dalam keadaan yang relatif sempurna, HTML halaman dan CSS yang digunakan untuk presentasi harus benar-benar terpisah. Untuk desain kami berdasarkan standar web, biasanya kami membuat terlebih dahulu kode positioning untuk setiap div frame di Halaman Master, serta kode modifikasi untuk bagian header dan footer. Ini digunakan oleh setiap halaman konten dan akan ditempatkan dalam CSS terpadu. Untuk halaman konten spesifik lainnya, setiap halaman akan memiliki tata letak konten dan gaya modifikasi yang berbeda, jadi saya menempatkan bagian spesifik dari setiap halaman tertentu di CSS-nya sendiri. Ini membentuk model CSS yang digabungkan lapis demi lapis sesuai dengan tingkat implementasi Halaman Master (yang dapat disarangkan). Keuntungannya adalah mewujudkan pemisahan tanggung jawab setiap file CSS, sehingga lebih mudah untuk dipahami dan dipelihara.
Karena saya sudah lama tidak mengenal ASP.NET 2.0, hal di atas hanyalah sedikit pengalaman pribadi.
http://rchen.cnblogs.com/archive/2006/05/23/masterpage_with_css.html