2009-08-13 10 views
7

meta:resourcekey属性でローカライズされたテキストを取得するページにラベルがあります。私が持っている問題は、それらがマルチビューのどのビューにあるかに応じて異なるテキストを表示したいということです。設定ページのメタ:resourcekey

label.Attributes.Add("meta:resourcekey", "label")でも属性を追加しようとしましたが、テキストが読み込まれていないようです。私はPreRenderと同じ取引でそれを試しました。ソースを見ると属性が表示されますが、テキストは表示されません。

これは行うことは可能ですか?もう1つの選択肢は、2つのラベルを持ち、ページの読み込みを変更することですが、それはあまり優雅な解決策のようです。

ありがとうございました。

+0

「彼らは、彼らがいるマルチビューの視点」にありますか?ラベル、ユーザー、または他の何かを参照してください? – Greg

答えて

3

meta:resourcekey属性を割り当てようとするアプローチは、単にページパーサーによって特別に処理され、ページライフサイクルコードが実際に始まる前に置き換えられるだけで機能しません。

しかし、meta:resourcekeyは、基本的には、ローカルリソースファイルにアクセスするコードに相当するコードを宣言的に置き換えたものです。

<asp:Label ID="MyLabel" meta:resource-key="MyResourceKey" /> 

は同等です:つまり

<asp:Label ID="MyLabel" Text="<%$ Resources: myResXFile, MyResourceKey %>" /> 

のコードと同等です:

MyLabel.Text = Resources.MyResXFile.MyResourceKey; 

すでに場合は、コードのあなたのラベルを扱っているように見えますあなたはそれに属性を割り当てようとしています。なぜコード内の値を設定しないのですか?

+0

メタ属性を使用する最初のメソッドは、リソースファイル内の "Key.Property"行のセットを暗黙的にバインドするため、これは完全ではありません。 2番目の2つの方法では、キーが適用されるプロパティを明示的に識別する必要があります。 –

7

私は背後これと同じくらい簡単ですあなたは、コード内のプログラムのローカライズのために何をしたいと思う:LocalResourceはMyPage.aspxと呼ばれるページのために、あなたはMyPage.aspxというリソースファイルを作成していることを意味使用

ctrl.Text = (string)GetLocalResourceObject(“myCtrlKey.Text”); 
ctrl.AnotherAttribute = (string)GetLocalResourceObject(“myCtrlKey.AnotherAttribute”); 

.resxおよび/またはMyPage.aspx。{culturename} .resxは、特別なディレクトリApp_LocalResourceにあります。

あなたの代わりにローカルのグローバルリソースのように、MyResourceFileName.resxと呼ばれるリソースファイルを保持して呼び出すために特別なディレクトリApp_GlobalResource を使用する場合:

ctrl.Text= (string)GetGlobalResourceObject(“MyResourceFileName”, “myGlobalKey”); 

copied from a blog about localization in the code behind

- PS Attributes.Add( "meta:resourcekey"、 "label")が動作しない理由は、 "meta:resourcekey"は実際の属性ではなく、aspxでのその使用は実際に有効なaspxマークアップではなく、むしろ前処理そのカウコンパイラは、リソースファイルに格納されているものに基づいて、より長い属性の名前/値の組に変換します。

関連する問題