- PR -

ASP.NET マスターページを更新しない方法

1
投稿者投稿内容
kinu
常連さん
会議室デビュー日: 2007/10/24
投稿数: 34
投稿日時: 2008-01-21 17:31
いつもお世話になっております。
ASP.NETのマスターページの機能を使用しwebページを作成しています。


●構成としては
 マスターページ:A.master
 そのコンテンツ:MAIN.aspx
         B.aspx
         C.aspx

●A.masterにはTreeViewがあり、以下の構造になっています。
  メニュー
   リンク先
      一覧(URL:B.aspx)
      詳細(URL:C.aspx)

●TreeViewは初期状態では
  メニュー
   +リンク先
 という表示です。


質問
 ツリーより一覧を選択するとツリーの状態が初期状態になってしまいます。
 これをツリーから一覧を選択した表示状態を保ちたいのですが、可能で
 しょうか?
 


くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-01-21 17:55
初期状態になってしまう理由は、お分かりでしょうか?

Masterページは、あくまでページの雛形な為、フレームの様には動作いたしません。

提示されたページ構成であるならば
一覧を選択された時は、B.aspxのサーバーサイド上にて
A.masterのTreeView-Nodeに対してExpand(展開)をするようにすれば
良いのではないでしょうか。

[参考までに]
マスターページのPage_LoadよりコンテンツページのPage_Loadが先に処理されますので
コンテンツページにてマスターページの動作(振る舞い)を指定する事は容易に行えます。
kinu
常連さん
会議室デビュー日: 2007/10/24
投稿数: 34
投稿日時: 2008-01-22 12:01
くまっちさん
ありがとうございます。
やっぱりそうですよね。あればと思ったのですが。
次のように回避するつもりです。

1.一覧を選択した時にツリーの状態を確認その情報をSessionでB.aspxへ送信
2.B.aspxを開く時に発生するA.masterのPage_Loadでその状態を回復
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-01-22 12:58
フレームとマスターページは似て非なる代物です。

> やっぱりそうですよね。あればと思ったのですが。
タイトルの言葉通りマスターページの部分を更新(再読み込み?)させたくない場合
フレーム(frame or iFrame)を使うしかありません。
・A.Masterは、TreeViewを持つ通常のページに変更
・MAIN,B,C.aspxはフレーム内に読み込む為、通常のページに変更
こうなるとA.Masterは、不要になってしまいます。

どちらが良いとは、一概に言えません。要件次第です。
・マスターページのメリット・デメリット
・フレームのメリット・デメリット
を、それぞれ考慮したうえ、ご自身の求めるものに最適な方法を選択してください。

[下記部分編集]
前:マスターページの部分を更新(Postback)
後:マスターページの部分を更新(再読み込み?)

[ メッセージ編集済み 編集者: くまっち 編集日時 2008-01-22 13:10 ]
1

スキルアップ/キャリアアップ(JOB@IT)