2012-03-27 8 views
0

そのページにあるユーザーコントロールからページのグローバル変数にアクセスできるかどうかを知りたいと思います。.net - ユーザーコントロールからのページグローバル変数へのアクセス

public partial class index : System.Web.UI.Page 
    { 
    FormsIdentity id = (FormsIdentity)User.Identity; 
    string custID = "some guid"; 
    string accID = "some guid"; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    } 

これは単なる例で、実際のグローバル変数はより複雑なカスタム設定オブジェクトですが、同じである必要があります。

私はユーザーコントロールから変数にアクセスしたいと思います。これは、私はページとユーザーコントロールの両方で同じオブジェクトを使用する必要があり、実際には2回メモリ内に取得して格納したいと思っていないので役に立ちます。

これを行うかどうかは誰でも知っていますか?ありがとう!

+8

を行います。 –

答えて

2

はい、できます。これは、変数をユーザーコントロールに渡すことと呼ばれます。確かにそれはメモリに2回以上格納されていますが、それは懸念の分離と再利用可能な制御の「価格」のビットです。

項目が定数の場合は、それらを真のグローバルとして格納し、global.asaxの静的メソッドを使用してアクセスできます。リクエストベースでは、これは簡単な方法では機能しませんが、ファッションにすることができます。

ここでは、メモリに2回コメントすることを望まない場合は、私はこれが少しの情報(1)であることから、特にそれが要求の持続時間(2)だけ持続するので、これについて心配しないでしょう。 GCはすぐには発動しないので、完全に真実ではありません。

2

複数のコントロールでこの情報を使用する場合は、UserControlから継承したUserControlBaseを使用し、コントロールをUserControlBaseから継承させることをお勧めします。ページクラスと同じ操作を行います。次に、BasePageにプロパティを追加できます。あなたのUserControlBaseで参照するには、単にユーザーコントロールをカプセル化して再利用可能なことを意味しているので、あなたは彼らの親ページ(複数可)からのデータを取得するために期待していない、彼らはそれらに必要とどんなデータ受け渡しする必要があります...

protected UserInfo UserInfo 
{ 
    get 
    { 
     return ((BasePage)this.Page).UserInfo; 
    } 
} 
関連する問題