1

ASP.NET MVCを使用して作成された2つのaspxページ(A、B)があります。ファイルAには、いくつかのチェックボックスとテキストボックスがあります。

ページBに移動し、ブラウザの戻るボタン(MAC Safariの場合)を押してページAに移動しようとすると、ページが更新されません。ページは古い値を保持します(チェックボックスとテキストボックスの場合)。

サーバー側にブレークポイントがあったとき。ヒットすることができます。

サーバー側のアクションメソッドが呼び出されると確信しています。MACSAFARIブラウザに問題があります。

他のブラウザIEとFFで同じ使用例を試しましたが、正しく機能しているようです。

かなり単純ですが、グーグルしながら正しい答えが得られます。

誰かがMACでこれの回避策を提案できますか?

ありがとう 、

ビジェイ

4

2 に答える 2

1

確認していませんが、Mac用の Safariだけがこれを行うブラウザではないことは確かです。これは、ブラウザのキャッシュの仕組みによるものです。ブラウザの履歴をさかのぼると、Safari(およびAFAIK Firefoxも同様)はページを再度要求しません。代わりに、Safari/Webkit は以前にアクセスしたページのコピーをメモリに保持するため、ほぼ瞬時に戻ることができます。

この状況では、Safari は入力の値を含め、その正確なコピーを保持しています。通常の状況では、これはユーザーにとって便利かもしれません。私が言ったように、これを行うのは Safari だけではないと思います (たとえそうであったとしても、他のブラウザーが将来同じことを選択する可能性があるので、特にターゲットにしないでください)。

「A」アクションのキャッシュを無効にすると、ブラウザがページを再度取得する (そして入力の値をリセットする) ようになるため、うまくいくはずです。このようなもの:

[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult A()
{
    return View();
}

これで問題が解決しない場合は、Web ページの onload イベントで javascript を使用して値をクリアする必要がある場合があります (これは jquery で行うのは非常に簡単なはずです)。何かのようなもの:

$(document).ready(function() {

     $('input').each( function() {
         if($(this).attr('type') == 'checkbox') { 
              this.checked=false;
         } else {
              $(this).val('');
         }
     }

})

注: コードはテストされていませんが、役立つことを願っています (ページのキャッシュの無効化に失敗した場合) :)

于 2009-12-15T10:24:57.367 に答える
-1

フォームにautocomplete="off"を設定してみてください

これは、Firefoxでページを更新した場合にも発生します。

于 2009-12-15T09:17:53.640 に答える