- PR -

WEBページ間での値渡し

投稿者投稿内容
けぃ
常連さん
会議室デビュー日: 2003/01/23
投稿数: 26
投稿日時: 2003-02-03 14:22
はじめまして

ASP.NETでWEBアプリケーションを作成しています。件名についての方法がわかりません。私の調べたところセッション変数・プロパティを使った方法がありましたが、システム構成上セッション変数は使えません。またページ間を自由に移動するためにプロパティも使えない状態です。ほかに固有の値を常に保持できるような方法があれば教えてください。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-02-03 14:35
色々なページを好き勝手に飛び回らせるのに、Session変数を使えないと言うのは困りますね。

後できるのはリクエスト文字の中に
index.aspx?txt1=asfgdsag
みたいに入れるくらいですかね。

(この方法、GETだけではなくPOSTメソッドでも値を取れるんですね。知りませんでした。)
けぃ
常連さん
会議室デビュー日: 2003/01/23
投稿数: 26
投稿日時: 2003-02-03 17:04
ありがとうございます。

ただそのやり方では厳しいと思います。情報量が多いのです。書いていなくてすみません。動的に作ったHTMLを保持しないといけないのです。データ量は多いのでレスポンスも考えなくてはならないとするとどうしたらいいでしょうか
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-02-03 17:55
確かにこの方法では、多量のデータは無理ですね。

情報を保持しておく方法は結局2通りしかありません。
サーバー側に持っておいて、クライアントから送られてくるIDを元に同じデータにアクセスする方法(私はSessionを使う以外知りませんが)と、クライアントが毎回「私が動的に作っているHTMLは今こうなってますよ」と申告する方法です。
大きなデータなら、もちろんサーバー側に置いておく方がネットワークに負荷をかけずにすみます。やはりSession変数に保存しておくのが一番効率的だと思います。多数のページから同じデータにアクセスするならなおさらです。
問題となっている「システム構成」を変えるのが一番早いような気がしてきました。

すいません、お役に立てなくて。
Dee
常連さん
会議室デビュー日: 2002/03/05
投稿数: 28
投稿日時: 2003-02-03 18:16
引用:

一郎さんの書き込み (2003-02-03 17:55) より:
情報を保持しておく方法は結局2通りしかありません。
サーバー側に持っておいて、クライアントから送られてくるIDを元に同じデータにアクセスする方法(私はSessionを使う以外知りませんが)と、クライアントが毎回「私が動的に作っているHTMLは今こうなってますよ」と申告する方法です。
ん、お役に立てなくて。


ASP.NETではもう一つ、ページのカスタムプロパティを介して情報を受け渡す方法があります。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/Vbcon/html/vbtskpassingvaluesbetweenwebformspages.asp

Servet.Transferを使うので、必ずPOSTで遷移する必要がありますが、なかなか便利です。データの転送が入力項目をDBにすぐに保存せず、いったん確認画面に飛ばす場合など、これまでSessionやhidden項目で実現していた部分に適用できるかと思います。

ページ遷移による情報の受け渡しがサーバ側で行われるので、情報量もそれほど心配する必要はないかと思います。POST遷移しなければならない、というのがネックになるかもしれませんが。

引用:

あすとらさんの書き込み (2003-02-03 14:22) より:
またページ間を自由に移動するためにプロパティも使えない状態です。


#既にカスタムプロパティについて考慮しておられるんですね(汗
これは、どのページからどのページに遷移するか不定、ということでしょうか?
先ほどのMSDNのページでは、呼び出し元ページをインスタンス変数として持っていましたが、試してみた限りでは、インスタンス変数として使わなくても、Context.Handlerを適宜キャストしてあげれば動くみたいです。
設計が結構難しそうですが、全ページで共通のインタフェースを実装すればどのページから飛んできても同じプロパティを取れますね。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-02-03 18:58
引用:

Deeさんの書き込み (2003-02-03 18:16) より:

Servet.Transferを使うので、必ずPOSTで遷移する必要がありますが、なかなか便利です。データの転送が入力項目をDBにすぐに保存せず、いったん確認画面に飛ばす場合など、これまでSessionやhidden項目で実現していた部分に適用できるかと思います。

ページ遷移による情報の受け渡しがサーバ側で行われるので、情報量もそれほど心配する必要はないかと思います。POST遷移しなければならない、というのがネックになるかもしれませんが。



Server.Transferですね^^;

補足ですが、POSTの場合だと転送情報量に制限はありません。
それに対してGETは環境依存によりますが、大体1〜2KBまでしかデータ転送できないようです。
この手法はASP開発していたときによく使用していました。

なお、Server.Transferを使用するにあたって注意するべきことは、
Try〜Catch〜End Tryに入れてはいけないことです。
この中に入れてしまうと、例外エラーになってしまったと思います。

#Response.Redirectを使用する場合も同様です。
けぃ
常連さん
会議室デビュー日: 2003/01/23
投稿数: 26
投稿日時: 2003-02-04 09:36
たくさんご意見ありがとうございます。

これらの意見を参考にもう少し考えて見たいと思います。ありがとうございます。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-02-04 10:38
あすとらさんの要求は満たさないかもしれませんが、もう一つ受け渡し方法を見つけました。
スレッド名が「WEBページ間での値渡し」ということですので、後からこのスレッドを見た人のために、書いておきます。

Page.Cacheプロパティを使ってもできるようです。

システム メモリが不足した場合、使用頻度が低いか、または重要でないアイテムがキャッシュから自動的に削除されるため、大量の要求を処理するためにメモリを有効に利用できます。

と書いてあります。
これは、Cacheがそういう機能なのか、それともそういう処理もさせられるということなのか、詳しく調べていないので良くわかりませんが。

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