2

urlrewrite.netを使用してよりわかりやすいURLを作成しており、web.configに次の書き換えルールがあります。

<if url="^/forsale/(.+)/(.+)/(.+)/(.+)/(.+)">
 <rewrite to="/aircraft/result.aspx?view=$2&amp;cat=$3&amp;loc=$4&amp;model=$5" />
</if>

これは、次の場所を参照できることを意味します: http ://www.mydomain.com/dept/manufacturer/,734,,810,,159,,163,,,,,,,,/1/999999/false

実際のURLを表示するには: http ://www.mydomain.com/folder/result.apsx?view =、734、、810、、159、、163 ,,,,,,,, / 1/1999999 / false ?view =、734、、810、、159、、163 ,,,,,,,,&cat = 1&loc = 999999&model = false

これは、何らかのPostBackイベント(ボタンクリックなど)をトリガーするまでは正常に機能します。トリガーすると、実際のページのクエリ文字列が書き換えURLの最後に追加されます。例:

http://www.mydomain.com/dept/manufacturer/,734,,810,,159,,163,,,,,,,,/1/999999/false?view=,734,,810,,159 ,, 163 ,,,,,,,,&cat = 1&loc = 999999&model = false

ヘルプ/提案/回答は大歓迎です。

ありがとう。

4

1 に答える 1

5

.NET Framework 3.5 SP1のASP.NETは、これを修正するための非常に簡単な方法を提供します。これで、ActionというHtmlFormクラスのプロパティを使用して、ポストバックURLを、書き換えが行われる前にブラウザーによって要求されたURLに設定できます。ASP.NETでは、HttpRequest.RawUrlプロパティを使用してそのURLを取得できます。したがって、URL書き換えモジュールを使用するときにWebフォームのポストバックURLを修正するには、次のコードをページに追加する必要があります。

protected void Page_Load(object sender, EventArgs e)  
{  
    form1.Action = Request.RawUrl;  
}  

詳細については、こちらを確認してください。

ASP.NETのポストバックとURLの書き換え

また、これを確認してください:

URL書き換えを使用したASP.NETPostBackの処理

ASP.NET 2.0では、コントロールの「アクション」属性を書き換えるために使用できる、よりクリーンなトリックがあります。具体的には、新しいASP.NET 2.0コントロールアダプターの拡張性アーキテクチャを利用して、コントロールのレンダリングをカスタマイズし、その「アクション」属性値を指定した値でオーバーライドできます。これには、.aspxページのコードを変更する必要はありません。代わりに、新しい「アクション」属性を出力するために使用するコントロールアダプタークラスを登録する.browserファイルを/app_browsersフォルダーに追加するだけです。

詳細については、こちらを確認してください。

ヒント/秘訣:ASP.NETを使用したURL書き換え

于 2012-12-17T14:54:55.923 に答える