国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

aspx頁面中標題單點解決方案

2024-05-04 11:06:38
字體:
來源:轉載
供稿:網友
  最近在使用.net2.0中ms提供的頁面導航組件sitemappath時,想到了一種解決頁面標題不同步的一種簡單而又方便的機制。

  目前存在的問題:

  一、整個網站中aspx頁面標題通常沒有統一的存放位置,針對每個頁面要么把頁面標題直接硬編碼在頁面的aspx文件中,要么通過aspx.cs動態寫進去(1.1中還要加入額外的標題控件,2.0中可以使用page.title屬性),而整個站點如果網頁很多的話,這種重復邏輯的代碼就要寫很多次,極其不美觀,并且無法在其它用到標題信息的地方實現同步。

  二、即使為了支持多語言支持把所有的頁面標題都放入資源(或xml)文件中,通過通一的程序代碼來加載標題也會存在一個問題,就是頁面中用到頁面標題的地方可能不僅在標題區如(頁面導航控件),如何讓這些控件也從這些資源文件(或xml)中取得這些標題信息也是一個頭痛的問題。

  要達到的目的:

  一、在整個網站中的主模板中一次性解決網頁標題的所有問題,所有網站中使用的標題均放在web.sitemap(可支持多語言)中維護,這樣也可以同時同步維護頁面的導航信息。

  二、在彈出窗體的標題中自動為每一個網站標題后面加入站點名稱如(用戶登錄|七思軟件),但在頁面導航控件中引用標題時則不出現這個站點名稱,如(主頁>會員中心>用戶登錄)。

  三、當aspx.cs的程序中引用page.title屬性時不能有站點名稱如頁面標題欄中顯示的為(用戶登錄|七思軟件),但在頁面的正常程序中引用的page.title值為(用戶登錄)。

  具體的實現方法如下:

  在網站的masterpage中加入以下代碼:

protected void page_load(object sender, eventargs e)
{
 if (!this.ispostback)
 {
  this.searchdescription.content = this.searchdescription;
  this.searchkeywords.content = this.searchkeywords;
 }
 if (sitemap.currentnode != null)
 {
  this.page.title = sitemap.currentnode.title;
 }
 else
 {
  this.page.title = "尚未在web.sitemap配置此頁面導航";
 }
}
protected override void render(htmltextwriter writer)
{
 this.page.title = this.page.title + " | " + keyss.webframework.configmanager.getinstance().sitename;
 base.render(writer);
}

  解釋:

  一、之所以不在(!this.ispostback){}塊中實現頁面判斷是因為page.title中無法保存視圖狀態,我覺得這是.net2.0中的一個小bug吧。

  二、之所以在render方法重寫title屬性是因為在頁面的生存期中,render方法不會保存viewstate,而從寫page.title內容僅在masterpage中有效是因為masterpage負責頁面標題的render,在其后的page的render方法中,title已經render完畢,些時改變title并不會影響render的結果。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沛县| 全州县| 祁门县| 龙陵县| 淳化县| 津南区| 同心县| 江安县| 隆安县| 西盟| 霞浦县| 金寨县| 乐昌市| 黄龙县| 永仁县| 大方县| 宁强县| 千阳县| 长乐市| 定日县| 惠来县| 石城县| 潮州市| 文化| 闸北区| 商丘市| 溧水县| 延吉市| 中西区| 聂荣县| 财经| 堆龙德庆县| 浦城县| 松原市| 德昌县| 九龙县| 哈巴河县| 团风县| 长春市| 威信县| 五寨县|