2

フラグメントを多用してさまざまなページのコンテンツを動的にロードするMVC3プロジェクトがあります。ファイルをアップロードするためにコントローラーにポストバックするページがあります。アップロードが完了したら、ユーザーを元のページにリダイレクトしたいと思います。アップロードが完了したら、リターンURLをアップロードアクションに渡して、ユーザーをそのページにリダイレクトします。

これはChromeとFirefoxで正しく機能しますが、IEはフラグメントを無視し、ソリューションのルートページに戻ります。以下は、ユーザーをリダイレクトするために使用するコードです。

public virtual ActionResult UploadFile(string returnURL)
{
    // Do some work here...
    return Redirect(returnURL);
}

IE 8にフラグメントを保持させ、ChromeやFirefoxのように動作させる方法はありますか?

そうでない場合、この問題を回避するための標準的な方法はありますか?

httpsリダイレクトとフラグメントに関するEricLawの記事も確認しました。フラグメントがさまざまなブラウザでどのように処理されるかについての洞察を提供します。

4

2 に答える 2

2

あなたはこれで小川を上っているかもしれません。URL フラグメントは、ページをブラウザーのキャッシュに追加するか、URL をブラウザーのナビゲーション履歴に追加するかを決定する場合など、URL の一意性にとって重要であるとは見なされません。

URL クエリは URL 一意性分類に含まれますが、フラグメントは含まれません。

IE8 がフラグメントを含む URL にリダイレクトしている可能性がありますが、フラグメントは URL キャッシュ同等性テストにとって重要ではないため、ブラウザー キャッシュからルート ページ (フラグメントなし) をロードしています。

この理論をテストする強引な方法の 1 つは、ブラウザーのキャッシュを消去し、サーバー上ですべてのページをキャッシュなしとしてマークし、それによって IE8 の動作が変わるかどうかを確認することです。ページがブラウザのキャッシュにないときに、IE8 がフラグメントをそのままにして目的のページにリダイレクトする場合、これは理論を裏付けるものです。これは単なるテスト シナリオであり、運用展開用のソリューションではありません。

于 2012-07-11T17:32:36.990 に答える
0

私はそれを再現するための小さなアプリケーションを構築しました。IE9とChromeでは期待どおりに機能しました。

私はあなたに2つの提案があります:

  • キャッシュの問題である場合は、URLにタイムスタンプを追加すると役立つ場合があります。次のようなURLを作成してみてください。

http://localhost:50173/Sample/?timestamp=26.07.2012%2021:11:00#myLocation

  • それが機能しない場合、回避策は、ナビゲートする最後にjavascriptをレンダリングすることである可能性があります。

window.location = window.location + "#myLocation";

于 2012-07-26T19:15:08.763 に答える