0

問題を再現するには:

  1. サーバー検証を使用して ASP.NET MVC 3 ページを作成します。
  2. 検証エラーで送信します。
  3. サーバー検証エラーは赤で表示されます。
  4. 検証エラーを修正して再度送信すると、成功すると別のレポート ページにリダイレクトされます。
  5. レポート ページの [戻る] ボタンをクリックすると、検証エラー メッセージが元のフォームに表示されたままになります。

[戻る] ボタンをクリックすると、サーバーの検証メッセージが表示されてユーザーがイライラします。

  • 戻るボタンを無効にする解決策は考えていません。
  • 戻るボタンをクリックしてページを更新する解決策は考えていません。

フォームの送信が成功するか、その他の有効なソリューションが作成される前に、サーバーの検証メッセージが消えると考えます。

ありがとう

4

2 に答える 2

0

戻るボタンに記憶されたページが表示されないように、履歴をクリアする方法を次に示します

于 2012-10-25T06:51:07.690 に答える
0

検証メッセージが表示されないようにするために、キャッシュを無効にして、ユーザーが [戻る] ボタンをクリックしたときにブラウザーが自動的にページをリロードするようにします。ただし、メソッドを使用してページが以前に送信された場合は、フォームの再送信に関する警告がユーザーに表示されますPOST。これを回避するには、ModelState が無効な場合にJavaScriptwindow.history.back()を使用してPOSTリクエストを前のリクエストに戻します。GET

詳細はこちら...

コントローラーに 2 つの関数を作成します。1 つは[HttpGet]属性を持ち、もう 1 つは属性を持ち[HttpPost]ます。

バージョンではHttpPost、次のロジックを追加します...

  1. ModelState が無効な場合は、ModelState とフォーム/モデル データを TempData に保存します。
  2. 次のような JavaScript を含む単純なビューを返します。

    <html> <本文> <スクリプト>window.history.back(); </script> </body> </html>

HttpGetバージョンでは、

  1. 属性を追加[OutputCache(NoStore = true, Duration = 0)]
  2. TempData から ModelState とモデル データを読み込むロジックを追加する
  3. モデル データを View に渡す
于 2013-03-06T08:07:38.960 に答える