postBackでフォームのactionが書き換わるのを制御したい
恐れ入ります。
まずは現象を説明します。
/dirBefore/xxx.aspxで
Server.Transfer("/dirAfter/yyy.aspx")を実行し表示された
/dirAfter/yyy.aspxで
<asp:TextBox AutoPostBack="true"/>からポストバックすると
フォームのactionが"/dirBefore/yyy.aspx"に書き換わってしまう
ちなみに
<asp:button UseSubmitBehavior="false"/>
で先に一度サブミットさせると、以降症状は起きません。
そこで質問は
この書き換えはどのモジュールで行っていて
どうすれば制御できるのか
です。
ちなみに、こちら
ASP.NET Web フォーム用の URL 書き換え
https://technet.microsoft.com/ja-jp/library/ee890797.aspx
は参照し、以下のようにしましたが理解が及ばず解決しません。
Form.Actionの設定を試し
以下の絶対パスではひとまずは成功していましたが
Private Sub Page_Load(・・・) Handles MyBase.Load
Page.Form.Action = Page.Request.CurrentExecutionFilePath
End Sub
ある事情からセッションをクッキーレスにしなければならなくなり
そのため以下のように(手抜きですが)相対パスに変更しましたが
そうするとサブミット時に書き換えられてしまうケースが発生します。
Private Sub Page_Load(・・・) Handles MyBase.Load
Page.Form.Action = ".." & Page.Request.CurrentExecutionFilePath
End Sub
書き換えられるのは、Transfer前後のパスの深度が異なる場合のようですが
未確認です。
そもそもformのactionがブラウザのソースのままで
勝手に書き換えらることさえなければこんな苦労は無用です。
書き換え動作を無効にするか、さもなくば書き換えるパスを操作する方法知りたいということです。
よろしくお願い致します。