2010-11-18 6 views
1

これまで同様の質問をしましたので、少し繰り返していただければ幸いです。マスターのクラスCに要素を渡す#

global class: 

private static label myLabel; 

public label updateLabel 
{ 
    set { myLabel = value;} 
    get { return myLabel;} 
} 

:ここ

は私の質問ですが、私は私が私が持っているグローバルクラスにこのコントロールを渡し、ページの読み込み上のラベルを持っているマスターページを持って、クラスの中のようなものです私は

global.updateLabel = labelOnMasterPage; 

が、今私は、アプリケーションのどこかコントロールを持っていると私は

global.updateLabel.Text = "my new text for label"; 
を言っていると言うんページロードイベント

これはマスターページのラベルを更新し、すべてが機能します。今私のこれはログインしている1つのユーザーだけで動作し、このアプリケーションは複数のユーザーがいますので、私はグローバルクラスのラベルを静的に宣言しているので静的です。 ?

これには良い方法がありますか?御時間ありがとうございます。

+1

あなたの前の質問で良い答えがあります – Andrey

+0

右の指示が(編集時に)示唆されているようにコードをインデントし、より多くの回答を受け入れてください。 –

答えて

0

はい、staticはスレッドまたはユーザーに関係なく、アクセスするすべてのコードに適用されます。 ASP.NETのような高度にスレッド化された環境にstaticフィールドが必要なことは非常にまれです。

また、ラベルインスタンスの長さを意図的に超えて人工的に延長しています()。

ユーザーのセッションやアプリケーションレベルなどの選択肢がありますが、文字列(ある場合)、ラベルオブジェクトは保存しないでください。

0

静的クラスの場合、すべてのユーザーに同じものが表示されます。

スレッドの数のために、ASP.netアプリケーションでこの種のアプローチを使用することに注意する必要があります。本当にこれをやりたければ、おそらくロックでスレッドセーフなものにするべきです。

私は個人的にデータベースに保存しますが、この種のアプローチは非常にハッキリです。

関連する問題