2012-01-02 4 views
2

グローバル化のマスターページで次のコードを使用できません&ローカリゼーション。コード部分にコメントとして、私はそれが正常に動作マスターページ以外の他のページにこのコードを追加するとASP.NET WebページC#3.0のグローバル化とローカリゼーションC#3.0

protected override void InitializeCulture() 
    { 
     if (Request["Language"] != null) 
     { 
      //String selectedLanguage = Request["Language"]; 
      // code wil go here 

     } 
     base.InitializeCulture(); 
     //base.InitializeCulture gives error as mentioned in the next line 
     //does not contain a defination for InitializeCulture 
    } 

「をInitializeCultureためdefinationが含まれていません」というエラーになります。マスターページでこのコードを使用することには制限があります。

マスターページでこのコードを定義することができれば、すべてのファイルにこのコードを書く必要はありません。

は私が何か間違ったことをやっている、私はスレッドとグローバル化のためのファイルが含まれてい、まだそれはあなたがあなたのページクラスでこれを行う(= InitializeCultureを上書き)する必要がマスターページ

答えて

3

では動作しません。マスターページでは機能しません(マスターページはページからではなく、コントロールから派生しています)。私はあなたがページから派生し、このクラスからすべてのWebフォームを派生させる基本クラスを実装することをお勧めします、そして、コードを一度だけ書く必要があります。独自の基本クラスを持つことは常に便利です。 Visual Studioで

あなたは新しいクラスPageBase.csを追加します。

public class FormBase : Page 
{ 
    protected override InitializeCulture() 
    { 
     if (Request.Form["lbCulture"] != null) 
     { 
     String selectedLanguage = Request.Form["lbCulture"]; 
     UICulture = selectedLanguage; 
     Culture = selectedLanguage; 

     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage); 
     } 
     base.InitializeCulture(); 
    } 
} 

現在の文化は、セッション中に、いくつかのドロップダウンリストボックスに保存されているか、クエリ文字列で渡されますか。私はサンプルでリストボックスを使用しました。

そして、あなたはこのように、このページからごWebフォームを導き出す:私がしようとします..私は私がプログラミングに新しいですそれを行う方法がわからないです

public class Default : FormBase // instead of deriving from Page 
+0

。ありがとう – Learning

+0

私はいくつかのコードを追加しました。お役に立てれば。私の答えが正しいと答えてください。 – slfan

+0

@slfan 'MasterPage'にラベルを貼り付けてローカライズして、' MasterPage'を使わず、代わりに 'Page'から継承したBaseMasterPageを所有するとしたらどうでしょうか? – PUG

関連する問題