はじめまして。
ASP.NETのC#で開発を行っていますが、画面遷移で困っています・・・
A画面 ⇔ B画面 ⇔ C画面 と遷移する場合と、
A画面 ⇔ C画面 へ遷移する場合があり、戻り先が操作により異なります。
その場合、遷移元の情報はどのように保持していいのでしょうか?
現在は、ページ情報(各種コントロール情報・遷移元画面名)クラスを作り、Listに格納しセッションにて保持しています。
しかしなが、使い勝手が悪く(作り方が悪いのか・・・)困っています。
一般的にはこのような画面遷移のシステムを作る際はどのように作成するものなのでしょうか?宜しくお願いします。
No.3ベストアンサー
- 回答日時:
>ASP.NETでのフレームワーク化
大したことではありません。
通常、汎用的でどうにでも作れるものを、一定の基準に沿うようにするだけです。
たとえば、データつきページ遷移なら、
基底クラス内メソッド PageTransfer("遷移先", (Dictionary<string.object>)持ち出しデータ) を定義、
遷移先ページで
Page_Load 以外に カスタムイベント Page_Transfered(object sender, TransferEventArgs e) を発生させるようにし、
e.Parameters["xxId"] (持ち込んだパラメータ値)
e.PreviousPage (前のページ)
などを参考にいろんなことをやり取りできるとか、そういった仕組みを作るだけです。
多少骨は折れますが、この程度なら3日見込めば大丈夫かと思います。
No.2
- 回答日時:
これらはページ間でデータ関連をもったページですよね?
ということは、データの持ち回りの際にはなにがしかの(セッションを利用した)ページ遷移を行っていると思います。おそらく各ページクラスが共通の基底Pageクラスを持ち、その中で実装してませんか?
その辺でこの遷移元をうまく利用するように、まとめてフレームワーク化したほうがよいかと思います。
私は過去にこれに近いことをしたことがあり、モーダルページ風の遷移(別Windowは開きません)を実装して戻り先制御を行いました。
その時は通常遷移、モーダル遷移、分岐遷移(ポップアップ)などに分けた記憶があります。
仮に今回の場合、モーダル遷移(来た道と帰る道が一緒)とするわけです。
実装は、セッション内にシングルトン実装されたスタック配列に、Open,Closeっぽい動きに合わせてPush,Popするわけです。
この場合、戻り先はスタックをPopすれば出てくるので・・・・
という説明でイメージつかめますか?
その時はフレームワーク化だったので、大きな作りですが、簡易にしてしまうのなら、BのページやAのページの遷移の際に、セッションに処理のモードを示す値でも入れて、Cで読みだしてください。
また、決してTransferメソッドを使って、PreviousPageをもとにしてはいけません。ページマネージャを利用したStateパターンのようなハブ&スポークな構造を利用しないと、
開発が進んでページ間のリレーションが増すごとにこの仕様は足を引っ張りますので。
この回答への補足
そうです、基底Pageクラスで実装しています。
だいたいのイメージはつかめたのですが、ASP.NETでのフレームワークと言うのがいまいち掴めてません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- Windows 10 パソコンが使えず困ってます!(Microsoftアカウントでログイン後、PINコードに関するエラー) 2 2023/03/17 19:09
- Mac OS macが液晶割れしたのでデータを保護したいです 2 2023/03/27 18:36
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- 化学 結晶場理論で真空状態から例えば8面体配位でt2gが安定化するのはなぜでしょうか? 1 2023/04/30 19:09
- ポイントサービス・マイル ポンタポイントの登録の仕方を教えてください 1 2023/01/19 22:56
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- iPhone(アイフォーン) iPhone13 Pro Maxが異常に遅い理由? 3 2022/09/17 20:30
- gooポイント 「教えて!goo」のトップの「dポイント未連携」について 2 2022/08/11 23:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 別のブックのユ...
-
オートマトンNFAからDFAへの変換
-
HTTPリクエストヘッダーの設定...
-
ASPで画面間のパラメタ受け渡し
-
スマホで、左右にスワイプして...
-
VB.netによるWeb系ソフト...
-
c# 文字列の最後から1文字削除...
-
WCFのwsDualHttpBindingについて
-
DataGridViewのチェックボック...
-
HTMLボタンの文字色を変え...
-
Accessの画面更新を一時的に停...
-
getParameterで値が取得できず...
-
submitボタンにvalue属性の値で...
-
グリッドビューでのチェックボ...
-
Q&Aフォームを作成したいのです...
-
PHPからWindowsログインユーザ...
-
コンピュータへの接続数が最大...
-
複数選択のListBoxでClickイベ...
-
ブラウザの×ボタン判定
-
checkboxとlabelがずれる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面遷移が不正ですと表示されます
-
ASPで画面間のパラメタ受け渡し
-
HTTPリクエストヘッダーの設定...
-
【ASP.NET】ページ遷移してもGr...
-
エクセルVBA 別のブックのユ...
-
オートマトンNFAからDFAへの変換
-
スマホで、左右にスワイプして...
-
セッション変数への値の代入方...
-
ASP.NET による画面遷移で質問...
-
【ASP.net】リンク押下時に次の...
-
VB.NET 画面遷移
-
java scriptはseo的には影響な...
-
PowerPointのボタンにマクロ設定
-
request.QueryStringについて
-
POSTだけして、ページの移動を...
-
Access2013 VBA 複数の画面の遷移
-
unityでクイズゲームを作ってい...
-
VB.NETのWebアプリケーション開...
-
ASPとASP.netの連携について
-
Request Header の追加
おすすめ情報