1

私たちのサイトでは、大量のデータベース生成ページを生成するために URL の書き換えを行っています。すべてのページに、ユーザー用のログイン コントロールがあります。このような:

内部 aspx ページ: /DB.aspx?id=123 ユーザーに表示される URL: /ABC/123.aspx、/ABC/456.aspx ... (URL の書き換え)

残念ながら、各ページのタグには「DB.aspx?id=123」というアクション属性があります。ユーザーがボタンをクリックすると、ブラウザはもちろん存在しない /ABC/DB.aspx?id=123 に投稿します。

私が試した解決策: 1. HtmlForm をサブクラス化してアクション属性を変更します。これにより、サイト上の他のすべてのフォームが破棄されます。2. action 属性を削除します (ブラウザーが常に同じ URL に投稿するようにします)。これは書き換えられたページでは機能しますが、「/」(ルート ディレクトリの default.aspx) では動詞の投稿が「/」で許可されていないというメッセージが表示されます (iis 6 およびマッピングを制御できません)。

誰か?

4

4 に答える 4

1

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspxというscott gu のすばらしいブログ投稿を確認してください。

「具体的には、新しい ASP.NET 2.0 コントロール アダプター拡張アーキテクチャを利用して、コントロールのレンダリングをカスタマイズし、指定した値でその "action" 属性値をオーバーライドできます。これには、コードを変更する必要はありません。あなたの.aspxページで"

「URL 書き換えによる ASP.NET ポストバックの処理」セクションを確認してください。彼が正常に投稿したアダプターを使用しました。

Ps。cookieless セッションを使用しているときに URL 書き換えを使用すると、asp.net にいくつかの問題があり、書き換えられた URL は元のページよりも深いことに注意してください。(/abc/apage vs. /db?)。問題はフレームワークのソースコードにあります。回避策はありますが、それは全体的な問題です(トレードオフがあります:(...同じレベルでそれらを持ちたい場合があります)。

于 2009-03-06T22:37:18.757 に答える
0

セマンティクスかもしれませんが、アクション属性は「DB.aspx?id=123」または「/DB.aspx?id=123」ですか? URL の書き換えによって物理ページへのパススルーが許可されていると仮定すると、これが問題になる可能性があります。

于 2009-03-06T19:56:35.837 に答える