- - PR -
マスターページ自体まで再読み込みが発生する現象について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-16 21:47
はじめまして。
私は最近 ASP.NET2.0 + ASP.NET AJAX にて開発を始めた者です。 ご質問なのですが、マスターページを利用してWEBアプリケーションを構築した場合、 マスターページ内のメニュー項目をクリックして各ページに移るたびに、マスターページ自体まで再読み込みが発生し、画面がちらついてしまうことは仕方ないのでしょうか? フレームが使えるならば、共通部であるマスターページは再読み込みを行わず、 コンテンツ部分だけ読み込むといったことが可能なのですが、調べてみると ASP.NET2.0ではフレームはサポートしていない・非推奨だそうで途方にくれております。 UpdatePanelを使用しても、UpdatePanel内に別のWEBフォームを開くことが出来るわけ ではないので無理でした。 何か良い解決方法がございましたらご教授ください。 | ||||
|
投稿日時: 2007-09-16 23:13
AJAXについては不勉強ですが、マスターページはコンテンツページと力を合わせてひとつのHTMLレスポンスを作り出すため、コンテンツページが作り出したHTMLの部分だけ読み直すなどということはできません。
ですので、fdsさんがやりたいことは「マスターページの機能」としては実装できないことになります。 そうするとAJAXでなんやかやすることになるんですかね。ちょっと分からないですけど。 | ||||
|
投稿日時: 2007-09-17 00:03
ご回答ありがとうございます。
やはりマスターページを使用すると、どうしてもページ全体のリロードが行われてしまうんですね。 では、ASP.NET2.0では、ヘッダ部などの共通部をリロードさせたくない場合、どのような手段があるのでしょうか? 以前ならばフレームを使えば問題なかったのですが、非推奨となっている以上、フレーム以外の方法で実装したいと考えています。 もしかしてASP.NET2.0で作成されたWEBアプリケーションは、どのサイトも共通部までリロードしてちらつくのが通常なんでしょうか。 | ||||
|
投稿日時: 2007-09-17 00:43
それが普通です。ページを切り替えれば、ページ丸ごと読み込まれます。 fdsさんがやろうとした、UpdatePanel内に別のWebフォームを開くという方法は確かに無理です。しかし、Webフォームではなく、ユーザーコントロールを使用すれば可能だと思います。その場合、もしかしたらマスターページは不要になるかもしれません。 私はASP.NET AJAXを使った本格的なWebアプリを開発したことがないので、これが良い方法なのかどうかは判断つきませんが。。。 _________________ C#と諸々 | ||||
|
投稿日時: 2007-09-17 02:36
もし Ajax でやるとしても コンテンツページを丸ごと UpdatePanel に入れるようなことはしないでください。非同期通信だとわかりにくいですが、通信量がすごいことになります。
別ドメインと勘違いした。この部分は削除 [削除] というか、Javascript だけだと他のページは読み込めないんじゃないような。 そうするとサーバ側で別ページを読み込んでクライアント側にブリッジしてあげることになるかな? [/削除] _________________ かるあ のメモ http://karua.at.webry.info/ [ メッセージ編集済み 編集者: かるあ 編集日時 2007-09-17 02:39 ] | ||||
|
投稿日時: 2007-09-20 16:39
みなさん、ご回答ありがとうございます。
やはり、メニュー部の再読込は諦めるしかないようですね・・・。 ただ、以下のサイトではフレームを使用せず、メニュー部を再読込させてないようなのですが、 これはどういった技術で実現しているのでしょうか? http://www.microsoft.com/japan/products/expression/Expression-Web/default.mspx JAVAスクリプトでなにやらやっているのはわかるのですが・・・。 もしも分かる方がいらっしゃいましたら、教えてください。 | ||||
|
投稿日時: 2007-09-22 23:31
詳しく検証したわけではなく、パッと見からの推測で申し訳ないですが……。
中のJavascriptの処理などは全然見てないのですが、挙動とHTMLを見るに、普通にページ丸ごと書き換えが発生していると思いますよ。 ただ、読み込みやレンダリングが早かったりする理由で、ちらつきが気になってないのだと思います。 一応、もう少し推測を重ねると、 ・CSSやJavascriptを外部出しにして、それらのキャッシュが効くようになっている ・画像もキャッシュが効いている ・全部読み込まなくてもレンダリングが開始できるHTML構造を意識している (つまり、メニューの部分のHTMLを読み込んだ時点で、下のコンテンツを読み込まなくてもレンダリングが開始されている) とかではないでしょうか。 |
1