2013-07-18 16 views
9

私のASP.NET WebFormsページに私はポップアップするモーダルウィンドウを持っています。 (;文を最後に、したがってlocation.reload(真))の順序で再度Webページを表示するには、Internet Explorerを再送信する必要があります

function OpenMailAddressWin(subscriberContactRelationGid, routeId, btn) { 
    window.showModalDialog("SubscriberSecondaryAddress.aspx" + BuildQueryStringValuesForSubscriber(subscriberContactRelationGid, routeId, returntxtReceiptDate().value), this, strWindowFeatures + ";scroll:no;dialogWidth:442px;dialogHeight:350px"); 
    location.reload(true); 
} 

モーダルウィンドウは、私が親ページを更新する必要が閉じられた後、次のようにこのモーダルウィンドウを表示するためのJavaScriptコードがありますモーダルウインドウで行われた変更が影響します。

今の事は、私は私が言う警告のポップアップを取得このモーダルウィンドウ閉じると時々(infuriatinglyない毎回、)ということである。

」を再びWebページを表示するには、Internet Explorerが情報にあなたを再送信する必要があります

買い物をしている場合は、[キャンセル]をクリックしてトランザクションが重複しないようにする必要があります。それ以外の場合は、[再試行]をクリックしてもう一度ウェブページを表示してください。

これは何が起こっているのですか?

+0

このメッセージの原因となるポストバックはありますか? – melancia

+3

メッセージは、ユーザーを親ウィンドウに誘導したアクションがポストされたことを示唆します。ブラウザーは、ユーザーがポストを再送している場合、ポスト動詞が何かを変化させるように、ユーザーに常に警告します。 ユーザーが投稿を使ってページを訪問することがあり、時にはそれらが表示されないことがあります。 chrome内の – CurlyPaul

答えて

29

これはブラウザでの2重送信の問題です。

POSTリクエストを使用してページをロードしたときに、location.reload(true);を使用してページをリロードしようとすると、ブラウザが別のPOSTリクエストをサーバーに送信する必要があり、POSTがサーバーの状態を変更するため、したがって、ブラウザはユーザからの確認を必要とする。この問題を解決するには、通常POST-REDIRECT-GETパターンを使用します。

あなたの場合、単にlocation.href = location.hrefを使用するだけで、GETを使用してページがリロードされるため、問題を解決できます。

+3

: 'location.reload(true);は再投稿せずに動作します。私はちょうどそれを試した...(IEで - それは再び尋ねます)+1 –

+0

あなたも使用することができます、location.assign(location.href); – revolutionNET

1

このようにsetTimeout関数を作成できます。
これは、モーダルウィンドウを呼び出している間、私は同じ問題に直面した任意の

setTimeout(function() { 
    window.parent.location.reload(); 
}, 100); 
0

あなたを与えることはありません。
location.reloadを削除し、関数から値をtrueに戻しました。
これは私の問題を解決しました。

1

これは、POSTリクエストからview(Model)を返そうとしたときに発生します。実際には、POSTリクエストからビューを返すことはできません。ビューを返すのはGETの操作であり、GETのリクエストが必要です。
データを正常に送信し、データをデータベースに保存した後、コントローラーでReturnToActionを使用し、そのアクションメソッドから最終ビューを返す必要があります。あなたがあなたのページを更新したい場合はlocation.hrefGETリクエストを介してデータを取得するため

また、あなたは、location.href = location.href代わりのwindow.reload()を使用する必要があります。

関連する問題