3

私のページに移動する一部のユーザーは、次のような URL を介して移動します。http://domain/ProductDetail.aspx?Productid=123#Pricing

このセクションには、購入するための asp:button があります。このボタンはポストバックを引き起こし、ブラウザーでページを再レンダリングするときに FragmentIdentifier #Pricing はアドレス ウィンドウに表示されたままになります。

これは、ブラウザーが #Pricing セクションに移動した場合に表示されないページにレンダリングされた新しいコンテンツがあるため、問題を引き起こしています。

ポストバックで FragmentIdentifier を防ぐにはどうすればよいですか?

明確化: この問題は Chrome で発生するようですが、IE8 や FireFox では発生しません。アクション属性でそれへの参照がない場合でも、Chrome はポストバック後に #FragmentIdentifier を保持します。

4

4 に答える 4

2

あなたはできません、ブラウザはそれを送信しません:

識別されたリソースに対してURI参照を使用して取得アクションを実行する場合、ハッチング( "#")文字でURIから分離されたオプションのフラグメント識別子は、取得後にユーザーエージェントによって解釈される追加の参照情報で構成されます。アクションは正常に完了しました。そのため、URIの一部ではありませんが、URIと組み合わせて使用​​されることがよくあります。

サーバー側からURLハッシュ(#)を取得する方法

于 2012-07-16T18:45:37.187 に答える
0

ブラウザは、サーバー側で URL フラグメントを送信しません。それらを変更することはできません。試すことができる唯一のオプションは、URL の書き換えです。幸運を...

于 2012-07-16T19:03:36.813 に答える
0

同じページにリダイレクトすることで、ブラウザに # タグを強制的に削除させることができます。

于 2012-07-16T18:47:16.170 に答える
0

ASP.NET エンジンは URL を指定せずに単純な送信を行うため、ブラウザは現在のページの URL を取得する必要があります。

ハッシュを空の文字列に置き換える自己実行 JavaScript を HTML にフックすることで、ポストバック後にハッシュを取り除くことができます。

以下に例を示します。

if(this.Page.IsPostback)
{
    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "RemoveHash", "window.location.hash=''", true);
}
于 2016-06-13T11:36:53.937 に答える