Dalam program ASP sebelumnya, kami sering menggunakan Response.Write untuk menampilkan informasi header halaman web secara dinamis, tetapi di ASP.NET, apa yang disebut prinsip panduan pemisahan kode dan UI tidak lagi menginginkan kami melakukan hal ini (tentu saja, jika Anda bersedia, bisa, ini Lagi pula, ini hanya saran). Saya pernah melihat orang lain menggunakan <title ranut="server" id="titleControl">Judul Default</title> untuk menyetel judul, tetapi saya tidak melakukannya. Menurut saya ini sangat bagus karena akan menghasilkan id=" titleControl" yang berlebihan. Secara pribadi, menurut saya lebih baik menggunakan kontrol Literal, karena tidak menghasilkan karakter yang berlebihan :) Beberapa orang juga menggunakan js untuk menyetel judul secara dinamis , tapi apa yang Anda minta mesin pencari lakukan?
Sebenarnya sangat mudah untuk mengontrol informasi Kepala Halaman secara dinamis. Cukup tonton demonya terlebih dahulu: http://www.lvjiyong.com/demo/aspnet/setheader/
Demonstrasinya sangat sederhana. Anda dapat mengunduh kode sumber dan melihat lebih dekat. Semua anotasi ada di sana
.
Metode ini ditempatkan di BasePage. Lain kali Anda membiarkan WebForm mewarisi kelas BasePage, Anda dapat memanggilnya. Gunakan Literal untuk mengatur informasi Judul. Gunakan PlaceHolder untuk memuat style sheet dan skrip.
Literal memungkinkan kita untuk mengatur informasi teks secara langsung. Saat menggunakannya, pertama-tama kita biarkan program mengetahui apakah ada kontrol Literal yang ditentukan, dan jika demikian, atur Teksnya
/**//// <ringkasan>
/// Atur informasi Kepala
/// </ringkasan>
/// <param name="_name">Kontrol</param>
/// <param name="_control">Teks</param>
kekosongan pribadi setHeader(string _control, string _text)
{
Obj literal = this.FindControl(_control) sebagai Literal;
jika(obj != nol)
{
obj.Teks = _teks;
}
}
Misal kita setting <asp:Literal id="PageTitle" runat="server" /> di area Head, kita bisa setting titlenya seperti ini.
/**//// <ringkasan>
///Tetapkan judul halaman web
/// </ringkasan>
/// <param name="_title">Judul halaman web</param>
kekosongan yang dilindungi SetTitle(string _title)
{
setHeader("PageTitle","<judul>" + _judul + "</judul>");
Di WebFrom kita bisa mengatur judulnya seperti ini
this.SetTitle("Blog Lu");
Metode untuk Deskripsi, Kata Kunci, dll sama, tetapi Anda perlu mengatur Meta. Saya tidak akan membahasnya. Anda dapat melihat kode
sumbernya kami menggunakan kontrol PlaceHolder. Mengapa menggunakan ini daripada Literal?
PlaceHolder umumnya hanya menempati suatu posisi, yang memudahkan kita memuat kontrol secara dinamis. Hal ini membuat memuat js dan css jauh lebih nyaman. Pertama, kita juga menemukan kontrol PlaceHolder yang ditentukan.
/**//// <ringkasan>
/// Temukan wadah PlaceHolder dari LoadHeader
/// </ringkasan>
/// <pengembalian></pengembalian>
Kontrol pribadi findHeader()
{
kembalikan ini.FindControl("LoadHeader");
}Kemudian tambahkan kontrol secara dinamis
/**//// <ringkasan>
/// Muat kontrol ke dalam kontrol PlaceHolder
/// </ringkasan>
/// <param nama="_obj"></param>
kekosongan terlindung LoadPlaceHolder(HtmlGenericControl _obj)
{
objHeader = findHeader() sebagai Kontrol;
//Muat file skrip
jika(objHeader != nol)
{
objHeader.Kontrol.Tambahkan(_obj)
;
}Untuk memuat CSS atau JS, pertama-tama kita menggunakan HtmlGenericControl untuk membuat kontrol anak dan kemudian menambahkannya ke kontrol PlaceHolder
/**//// <ringkasan>
/// Memuat file style sheet yang ditentukan
/// </ringkasan>
/// <param name="_cssPath">Alamat file lembar gaya</param>
kekosongan terlindung LoadCss(string _cssPath)
{
HtmlGenericControl objCss = HtmlGenericControl baru("tautan");
objCss.Attributes["rel"] = "stylesheet";
objCss.Attributes["type"] = "teks/css";
objCss.Attributes["href"] = _cssPath;
objCss.Attributes["media"] = "layar";
ini.LoadPlaceHolder(objCss);
}
Kemudian ketika kita ingin memuat style sheet di WebForm, kita tinggal menggunakan
this.LoadCss("Style Sheet Address"); Sama saja dengan memuat js. Saya tidak akan menyebutkannya.
Fungsi yang saya tulis di kode sumber sedikit lebih baik daripada yang disebutkan di sini dirimu sendiri.