Keterampilan pemrosesan satu titik untuk judul halaman web.
Baru-baru ini, ketika menggunakan komponen navigasi halaman sitemappath yang disediakan oleh ms di .net2.0, saya ingin berbagi mekanisme yang sederhana dan nyaman untuk memecahkan masalah desinkronisasi judul halaman itu dengan semua orang.
Masalah saat ini:
1. Biasanya tidak ada lokasi penyimpanan terpadu untuk judul halaman aspx di seluruh situs web. Untuk setiap halaman, judul halaman dikodekan secara langsung di file aspx halaman tersebut, atau ditulis secara dinamis melalui aspx.cs (judul tambahan). juga ditambahkan di Kontrol 1.1, properti Page.Title dapat digunakan di 2.0), dan jika seluruh situs memiliki banyak halaman web, kode logika berulang ini harus ditulis berkali-kali, yang sangat tidak sedap dipandang dan tidak dapat disinkronkan di tempat lain di mana informasi judul digunakan.
2. Meskipun semua judul halaman dimasukkan ke dalam file sumber daya (atau xml) untuk mendukung dukungan multi-bahasa, akan ada masalah dalam memuat judul melalui kode program Tongyi, yaitu tempat di mana judul halaman digunakan dalam halaman mungkin tidak hanya Di area judul seperti (kontrol navigasi halaman), bagaimana membiarkan kontrol ini juga mendapatkan informasi judul dari file sumber daya ini (atau xml) juga memusingkan.
Apa yang harus dicapai:
1. Menyelesaikan semua masalah judul halaman web sekaligus di template utama seluruh situs web. Judul yang digunakan di semua situs web dipertahankan dalam Web.sitemap (dapat mendukung berbagai bahasa), sehingga informasi navigasi halaman juga dapat dipertahankan. secara bersamaan.
2. Secara otomatis menambahkan nama situs setelah setiap judul situs web dalam judul formulir pop-up, seperti (Login Pengguna | Perangkat Lunak Qisi), tetapi ketika merujuk judul di kontrol navigasi halaman, nama situs tidak akan muncul, seperti sebagai (Beranda>Pusat Anggota>Login Pengguna).
3. Ketika atribut page.Title direferensikan dalam program aspx.cs, tidak boleh ada nama situs. Misalnya, bilah judul halaman ditampilkan (Login Pengguna | Perangkat Lunak Qisi), tetapi nilai page.Title yang direferensikan dalam keadaan normal program halaman tersebut adalah (Login Pengguna).
Metode implementasi spesifiknya adalah sebagai berikut:
Tambahkan kode berikut ke halaman master situs web:
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e)
{
jika (!ini.IsPostBack)
{
this.searchDescription.Content = this.SearchDescription;
this.searchKeywords.Content = this.SearchKeywords;
}
if (Peta Situs.Node Saat Ini!= null)
{
this.Page.Title = Peta Situs.CurrentNode.Title;
}
kalau tidak
{
this.Page.Title = "Navigasi halaman ini belum dikonfigurasi di Web.sitemap";
}
}
override yang dilindungi void Render (penulis HtmlTextWriter)
{
this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(penulis);
}
menjelaskan:
1. Alasan mengapa penilaian halaman tidak diterapkan di blok (!this.IsPostBack){} adalah karena status tampilan tidak dapat disimpan di page.Title. Menurut saya ini adalah bug kecil di .net2.0.
2. Alasan mengapa atribut judul ditulis ulang dalam metode render adalah karena metode render tidak menyimpan kondisi tampilan selama masa pakai halaman, dan konten halaman. Judul yang ditulis dari halaman hanya valid di halaman master karena halaman master Bertanggung jawab atas rendering judul halaman. Dalam metode render halaman, judul telah dirender.
Sumber: BLOG Perangkat Lunak Qisi