2012-04-18 20 views
2

現在、私はマスターページとコンテンツページを持っています。私のマスターページはドロップダウンリストで構成されています。そこから子供を選択する必要があります。コンテンツページは選択した子に応じて読み込まれます。どのようにドロップダウン値を選択して保存する必要がありますか?マスターページからのコントロールへのアクセスasp.net - 値の保存

セッションを使用することはできません。ユーザーが複数のタブを開いて、同時に異なる子供のコンテンツを見ることができるようにしたいと思っています。この場合にセッションを使用することができれば、どうすればよいか分かりません。

私はそれが私の複数のタブの問題を解決するが、マスターページとコンテンツページが別のビューステートを持って、以来、私はビューステートを使用することができるとは思いません。

現時点では、コンテンツページで可変のstatic変数を使用しています。これをマスターページに設定しました。しかし、私が聞いたことから、静的変数はそのサイトのすべての現在のセッションにその値が格納されています。

質問: 私はどの技術を使用するべきかを提案することで誰も助けることができますか?

「アプリケーション」オブジェクトについて聞いたことがありますが、それを使用するのは意味がないと思います。

現在の作業コード:

(コンテンツページ)

public static string Child 
    { 
     get 
     { 
      if (child == null) 
       return "-1"; 
      return child; 
     } 

     set 
     { 
      child = value; 
     } 
    } 

(マスターページ)

protected void ddlChooseChild_IndexChanged(object sender, EventArgs e) 
     { 
      ContentPage.Child = ddlChooseChild.SelectedValue; 
     } 

答えて

2

異なるコントロール間でデータを共有するための最良の方法は、(HttpContextクラスのプロパティである)「アイテム」コレクションを利用することです。コレクションは、ハッシュテーブルですので、のようなあなたのページとユーザーコントロールからアクセスすることができます。

Context.Items["Child"] = ddlChooseChild.SelectedValue; 
+2

ありがとう、私の友人!完璧にそれを解決した:) – test

1

あなたは同様のPageID or somethingを使用してセッションを制限している場合を除き、セッションが上ご利用いただけます複数のタブ。この記事アウト

チェック、Master Content Page interaction

+0

私はセッションが複数のタブで提供されていますけど、私は、同じセッション変数が異なるタブに異なる値を持つようにしたいです。これはセッションで可能ですか? – test

+0

@test、これは何かを助けるかもしれないhttp://stackoverflow.com/questions/2840615/asp-net-session-multiple-browser-tabs-different-sessions – Habib

+1

@testオブジェクトをセッション変数に格納することができます。あなたのオブジェクトには、リスト、配列などを使用して任意の数のタブが必要な情報を含めることができます。 – Jeremy

関連する問題