- PR -

ASP.NET 遷移元画面のURL取得方法

投稿者投稿内容
BIG
会議室デビュー日: 2004/06/17
投稿数: 10
投稿日時: 2004-07-05 21:35
VB.NETでWEBフォーム間のデータ遷移をContext.Server.Transferを使用して行っています。

(例)formA.aspx → formB.aspx の呼び出し
  formA.aspx.vbに記述
    Context.Server.Transfer(formB.aspx )

formBが表示された後に、選択されたデータを再び呼び出し元へ遷移させたいのです。
呼び出し元が複数ある場合に、呼び出し元のURLの取得方法はどうしたらよいのでしょうか?

よろしくお願いします。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-06 09:04
こんにちは。

遷移元用Sessionを作りTransferの前で格納してやる方法ならよくやっていましたが、
それではダメでしょうか?

追記:こんな感じで
  Session("PrevPage") = "formA.aspx"
  Context.Server.Transfer(formB.aspx )

_________________
まゆりん@なんとなくDelphi

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-07-06 09:12 ]
fizzy
会議室デビュー日: 2003/09/09
投稿数: 17
お住まい・勤務地: TOKYO
投稿日時: 2004-07-06 09:16
遷移先でContext.Handlerで判断してます。

↓参照
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpguide/html/cpconPassingServerControlValuesBetweenPages.htm
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-06 09:22
あ、@ITさんの記事に載ってましたね

http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet16/aspnet16_02.html

今度やるときはこっち使おうっと。
_________________
まゆりん @ わんくま同盟
Blog る。
BIG
会議室デビュー日: 2004/06/17
投稿数: 10
投稿日時: 2004-07-06 11:32
まゆりんさん、fizzyさん、ありがとうございます。

formAからformBへの値渡し、受取側formBにてContext.Handlerを使用して呼び出し側formAの判断も出来ているのです。
しかし、呼び出し側のURLを取得する方法がわかりません。

下記のロジックでは、
「型 'System.Web.IHttpHandler' の値を 'String' に変換できません。」
の構文エラーとなります。

<formB> VB.NETです
  Dim strNo As String
  Dim strUrl As String
 
  Private Sub Page_Load(ByVal ・・) Handles MyBase.Load
If IsPostBack Then Exit Sub

   If TypeOf Context.Handler Is SourcePage Then
  strNo = CType(Context.Items("no"), String)
  strUrl = CType(Context.Handler, String) ← ここで上記エラー
 End If
 End Sub

formBは汎用的に複数のformから呼び出される為、
string型でURLを取得しておき、formBのボタンクリックイベントにて、
今度は呼び出し元formAをformBから呼び出したいのです。

  Private Sub Button_Click(ByVal ・・・) Handles Button.Click
  Server.Transfer(strURL)

とても初歩的な質問だと思いますが、よろしくお願いします。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-06 12:28
引用:

BIGさんの書き込み (2004-07-06 11:32) より:
formAからformBへの値渡し、受取側formBにてContext.Handlerを使用して呼び出し側formAの判断も出来ているのです。
しかし、呼び出し側のURLを取得する方法がわかりません。


Context.Handlerは既に使われていたのですか・・・。
では、自分が調べて(試して)みたことは始めに書いて下さるようお願いします。
でないと今回のように二度手間になってしまい、お互い時間の無駄になっちゃいますよね?

さて本題ですが、fizzyさんが提示されているページ(ローカルにmsdnがあれば見れるはずです)に記載されている方法で何とかなりませんかね?

この辺り↓
Dim fp As FirstPageClass

Sub Page_Load()
If Not IsPostBack Then
fp = CType(Context.Handler, FirstPageClass)
End If
End Sub

で、Server.Transfer(fp.FirstName)になるのかな?
#VB環境がないので間違ってたらごめんなさい。

ちなみにMSサイトではこちらに記載されています。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconpassingservercontrolvaluesbetweenpages.asp


_________________
まゆりん @ わんくま同盟
Blog る。
BIG
会議室デビュー日: 2004/06/17
投稿数: 10
投稿日時: 2004-07-06 14:51
まゆりんさん、ありがとうございます。

そうですね、説明不足だったようです。すみませんでした。
ご提示して頂いたページを参考にしましたが、
最後に呼び出し元formAをformBから呼び出す所が上手くいきません。

 Server.Transfer(fp.FirstName)だと
 「FirstNameはfpのメンバではありません」というエラーとなってしまいます。

VB.NETで書き方の問題だと思うのですが、、、
色々と調べてはいますが、わからないのです。
よろしくお願いします。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-06 15:49
すみません、先程挙げたFirstPageClassは呼び出し元ページのクラス名でした。
#思いきり斜め読みしてました・・・
これではどのクラスから呼び出されたか、いちいち見なければならなくなりそうです。
いい方法があればフォローして頂きたいところですが・・・。

C#では先程挙げた記事に記載されているとおり、
Context.Handler.ToString()
であれば呼び出し元のファイル名(ASP.xxx.aspx)が取得できますが、
VBにはなかったような・・・。

うーん、お役に立てず申し訳ないです・・・。

_________________
まゆりん@なんでVB入れなかったんだろう・・・

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-07-06 15:54 ]

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