程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET 2.0 Language Swithcer and Theme Swiche

ASP.NET 2.0 Language Swithcer and Theme Swiche

編輯:.NET實例教程
在ASP.Net 2.0 中提供多語言轉換和多樣式主題轉換功能,兩種實現形式比較類似,所以放在一起說明一下。
  1. Language switcher 多語言轉換
  在Quick Start Tutorial 中,介紹了如何存儲和應用用戶選擇的語言。一般是用一個DropDownList展示支持的語言,供用戶選擇,通常是放在masterpage 裡面,將用戶選擇的語言存儲起來 這裡用了ASP.Net 2.0的Profile,當然也可以存在cookIE session 或者querystring裡。在頁面裡重寫InitializeCulture 方法,使用用戶之前選擇的語言。因為設置語言的操作 (這裡是SelectedIndExchanged事件)發生在InitializeCulture 時間後面,所以在設置操作完成後為了使的當前頁面也馬上生效,需要做個重轉向,以從新加載本頁面,觸發InitializeCulture 事件。下面使quickstart中的部分代碼,注意紅色部分。因為有的頁面地址後面可能還存在queystring,所以個人覺得紅色代碼部分最好用Response.Redirect(Request.Url.PathAndQuery);代替。
   protected void DropDownLanguage_SelectedIndExchanged(object sender, EventArgs e)
   {
   string SelectedLanguage = DropDownLanguage.SelectedValue.ToString();
   //Save selected user language in profile
   Profile.SetPropertyValue("PreferredCulture", SelectedLanguage);
  
   //Force re-initialization of the page to fire InitializeCulture()
   Response.Redirect(Request.Url.LocalPath);
   }
   protected override void InitializeCulture()
   {
   // override virtual method InitializeCulture() to check if profile contains a user language setting
   string UserCulture = Profile.GetPropertyValue("PreferredCulture").ToString();
   if ( UserCulture != "")
   {
   // there is a user language setting in the profile: switch to it
   Thread.CurrentThread.CurrentUICulture = new CultureInfo(UserCulture);
   Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
   }
   }
  為了減少代碼的重復,一般會自定義一個customer base page類,使它繼承Page類,然後在自定義的頁基類中重新InitializeCulture方法。最後把你的每個頁面繼承自你的自定義頁面基類。這樣你就不需要每個頁面都重寫InitializeCulture方法了。
  
  但是上面這個方法還是不是很爽,因為每添加一個頁面都要去修改後置代碼,來繼承自定義頁基類。
  我們注意到,在InitializeCulture方法中實際上只是修改了當前線程的Culture和UICulture。那麼可不可以在一個全局的事件中,比如Application的某個事件,來修改這兩個屬性呢?很早以前我這麼試過,在Application的BeginRequest事件觸發時來實現InitializeCulture 的細節
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved