33728


恐れ入ります。  
asp.netのServer.Transferでページ遷移をしていますが  
**Transfer後に”自分”のURL** はどこで取得できるでしょうか？  
つまり

[code]

    Server.Transfer("/dirA/page1.aspx")
    
[/code]

で遷移したページ/dirA/page1.aspxで自分のURL「/dirA/page1.aspx」を”動的”に知りたい  
という間抜けな話です。

ちなみに、以下

[code]

    Page.PreviousPage.Request.Url
    Page.Request.Url
    
[/code]

いずれもTransfer前のURIですね。

**Transfer前にどこかに”わざわざ”保存** しておかないと  
”自分”のURLすらも取れないのでしょうか。


CC BY-SA 3.0
2017-04-03T02:29:21.973
33725
2017-04-03T04:19:22.950
2017-04-03T04:19:22.950
4236
20996
question
asp.net
asp.net：server.transfer後のurl（？）の取得方法


これが最善であるかは分かりませんが、`Page.GetType().FullName`で

> ASP.dir1_page1_aspx

という物理パスに基づいた型名が参照できます。ですので

[code]

    GetType().FullName.Substring(4).Replace("_aspx", ".aspx").Replace('_', '\\')
    
[/code]

の要領で変換できます。ただし元から`_`が含まれているような場合は特別な考慮が必要です。

また状況によっては`GetType().BaseType.FullName`の名称を使用したほうが良いかもしれません。こちらは各ASPXファイルの`Inherits`属性に記述されている値が取得できますが、変更可能ですので実際のディレクトリー構成とは一致していない可能性があります。


CC BY-SA 3.0
2017-04-03T03:12:01.377
33727
2017-04-03T03:25:50.343
2017-04-03T03:25:50.343
5750
5750
33725
answer


[`Server.Transfer()`メソッド](https://msdn.microsoft.com/ja-
jp/library/y4k58xk7\(v=vs.110\).aspx)はブラウザーに対して元のURLのまま、返すコンテンツを切り替えるものですから

> いずれもTransfer前のURIですね

は当然の結果ですし

> **Transfer前にどこかに”わざわざ”保存** しておかないと”自分”のURLすらも取れないのでしょうか。

正しく自分のURLが取得できています。

`Transfer()`後、処理しているURLを取得するには[`Request.CurrentExecutionFilePath`プロパティ](https://msdn.microsoft.com/ja-
jp/library/system.web.httprequest.currentexecutionfilepath\(v=vs.110\).aspx)を使用します。


CC BY-SA 3.0
2017-04-03T04:17:40.093
33728
2017-04-03T04:17:40.093
4236
33725
answer