タブナビゲーション-フレームまたはAJAX?
-
05-07-2019 - |
質問
私は、かなり標準的なWebインターフェイスになると思っているものを持っています。
4つの異なるリストビュー(グリッドコントロール)があり、上部の一連のタブからアクセスできます。
これを次のように実装しました:
代替テキストhttp://img402.imageshack.us/img402/1530/pagedu8 .jpg
タブ1はグリッド1を含むページ1をフレーム2にロードし、タブ2はグリッド2を含むページ2をフレーム2にロードします。
ただし、これは、グリッド内のアイテムをクリックし、DetailPage1.aspxをフレーム2に読み込むと、フレーム1とタブが引き続き表示され、アクティブであることを意味します。
フレームは1つだけにして、HttpRequest(またはasp.netのWebRequest)を使用して、タブクリックに基づいてページを動的に読み込むようにアドバイスされています。
これは正しいアプローチですか?手元にリソースやヒントがあれば、感謝します!
ありがとう
解決
フレームは絶対にノーです。他の手法では達成できないフレームには利点がありません。
それは、AJAXを使用する必要があるということですか?必ずしも。 AJAXは、リッチでシームレスなインターフェイスを提供する必要があると感じている場合、完全に優れたソリューションですが、必ずしも必要ではありません。
サーバー側インクルードを使用してタブを別の(共通)サブページに分けることもできますが、ASP.NETについて言及しているため(フレームワークv2以降で実行している場合)、マスターページを使用することもできます。 、タブは1つのコンテンツセクションまたはマスター自体にあり、グリッド/詳細は別のコンテンツセクションにあります。
2つの手法の主な違いは、AJAXを使用すると、タブからタブへの移行が滑らかでシームレスになることですが、a)少し余分な作業が必要です(特に、AJAXフレームワークに慣れていない場合) )基本的に4ページが1ページにロールされるため、ページは「重く」なり、管理がより複雑になります。 AJAX以外のルートを選択した場合の主な違いは、各タブをクリックすると、小さいながらも明確な更新効果があることです(毎回新しいページが読み込まれるため)。
もちろん、マスターページは、とにかく一貫したサイトスタイルと構造を維持するのに役立ちます。そのため、マスターページシステムでAJAXを使用できない理由はありません。
他のヒント
フレームが足りない:ユーザーがブックマークを設定したい場合、およびユーザーがGoogle経由でサイトにアクセスした場合、問題が発生します:ナビゲーションフレームが表示されません。だから、たくさんの汚いjavascriptが必要です。これを確認します。 JavaScriptが必要な場合は、最初から実行してAJAXを使用してください
Ajaxが最適です。ただし、戻る/進むを介して閲覧できるようにしてください。最良の選択は、ページハッシュを変更することです。次のようなものを使用しました:
domain.com/#tab1の最初のタブ domain.com/#tab2の2番目のタブ
など。
jQueryを使用している場合、これは良いスタートになります(私はそれを使用していた問題ありません)。すべての一般的なフレームワークには解決策があると確信しています:)
フレームを使用する代わりに、ナビゲーションページを他のすべてのページに含める必要があります。ブラウザは、すべてのページに同じドキュメントが含まれていることを確認し、キャッシュします。
TabContainer を試したか、4つすべてをロードした詳細ペインとタブ選択の変更だけでパネルを表示/非表示?
ユーザーに表示される画面によっては、詳細ビューを動的に読み込むと(Ajaxまたはポストバック)、ユーザーが入力した情報を保持するのに問題が発生する可能性があり、待機することになります(ユーザーは待機するのが嫌いです)
jQueryとjQuery UIプラグインの使用をお勧めします。フレームは必要ありません。divコンテナのみです。
StingyJackと同様に、 TabContainer を制御しますが、ViewStateが大きくなりすぎないように注意する必要があります。
したがって、たとえば、そのタブが表示されるまでGridViewに何もロードせず、表示されていない場合はコンテンツを削除します(必要に応じてデータベースに保存します。TabContainerのActiveTabChangedイベントを使用することが重要です)グリッドのViewStateは無効化できますが、コンテナの場合はオンのままにします。
ASP.NETを使用しているので、4つのコントロールすべてをマルチビューにロードしてから、ポストバックで、クリックされたボタンに表示されるコントロールを設定します。
http://msdn.microsoft .com / en-us / library / system.web.ui.webcontrols.multiview.aspx
絶対にする必要がある場合を除き、フレーム(またはその点でiframe)を使用しないでください...
(i)framesを使用すると考えられる唯一の正当な理由は、実際にはファイルアップロードコントロールです。