9

ASP.net アプリケーション (c#) があります。

ユーザーが特定のページにいるとき、このページのリンクをクリックすると、子ページに移動し、製品の詳細が表示されます。

ユーザーがブラウザーの [戻る] ボタンをクリックした場合、親ページを初期状態に更新する必要があります。つまり、データが入力されたすべてのテキスト ボックスは空白にする必要があり、非表示のフィールドはすべてリセットする必要があります。基本的に、ユーザーがクリックして戻ったときに CTRL-F5 が必要です。

戻るボタンを無効にすることはオプションではありません。

これは特定のページでのみ必要です。

IE と Firefox では、これを問題なく動作させることができます。ただし、クロムを使用すると、隠しフィールドと同様に、テキストボックスにはまだ値が含まれています。Chrome で CTRL-F5 を押すと、ページは初期状態に正しくリセットされます。

これは私が試したコードです。

<%@ OutputCache Location="None" VaryByParam="None" %>

この:

   Response.Buffer = true;
   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetAllowResponseInBrowserHistory(false);
   Response.Cache.SetNoStore();

この:

    Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
    Response.Cache.SetValidUntilExpires(false);
    Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetNoStore();

また、さまざまな組み合わせでこれらのさまざまなものを試しましたが、成功しませんでした.

ありがとう

4

4 に答える 4

6

ブラウザの戻るボタンが押されても、入力フィールドはブラウザによって自動的にリセットされません。代わりに、ブラウザはユーザーの入力を保持するため、ユーザーは簡単に戻って入力を変更できます。

ブラウザがこのためのキャッシュをバイパスするため、このサーバー側を解決することはできません。代わりにautocomplete="off"、入力フィールドのHTML属性を使用して、ブラウザーによって保持されないようにすることができます。

JavaScriptを使用してフォームを手動でリセットすることもできます。

document.getElementById("form1").reset();
于 2010-04-29T12:57:59.243 に答える
2

これらの2行は、私にとってChromeの問題を解決しました。

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

そして、このオプションの行を使用して、同じページのリクエストごとに履歴エントリを作成しないようにブラウザに指示します。

Response.Cache.SetAllowResponseInBrowserHistory(true);

出典:

この投稿で最も人気のある回答

オプションの行

于 2012-03-06T19:16:33.727 に答える
0

「力ずくの」解決策は、ページの読み込み時にデータを既知の状態に設定するjavascriptをページに配置することです。したがって、すべての要素を検索し、データの配列またはjsonオブジェクトに基づいてデータを設定します。最初のリクエストでは、とにかくすべてがデフォルトになっているため、設定に違いはありません。戻るボタンのリクエストでは、JavaScriptを実行する必要があるため、ブラウザに関係なく、すべての値がリセットされます。

ただし、ブラウザを強制的に説明どおりに機能させることはできないと思います。ブラウザごとに、戻るボタンをどのように実装するかが決まるためです。Chromeでは、動作が異なります。

于 2010-04-29T12:57:46.717 に答える