1

私の Web アプリでは、ASP.NET MVC フォームの [送信] ボタンをクリックすると、ユーザーにエラー画面または成功画面が表示されます。エラーの場合、ユーザーはブラウザーの [戻る] ボタンをクリックし、正しくないことを修正してからもう一度送信するように指示されます。

ユーザーがクリックして戻ると、以前に入力したすべてのデータが画面のさまざまなフィールドに残っているため、これは正常に機能します。しかし、成功画面の場合、ユーザーが [戻る] をクリックしたときにデータをクリアして、誤ってデータを再送信することがないようにしたいと考えています。

ASP.NET MVC でこれを行うにはどうすればよいですか?

4

1 に答える 1

1

これを実現する方法は、Post-Get-Redirectパターンを使用することです。それはasp-mvc固有ではありませんが、Wikiが言うように

特定の重複したフォーム送信を回避し、ユーザー エージェントがブックマークと更新ボタンを使用してより直感的に動作できるようにするための Web 開発者向けの一般的なデザイン パターン。

背面をクリックすることは、これを処理する安全な方法ではありません。一部のブラウザーは、送信後にフォームの状態を維持しません。accidentally re-submitこのパターンは、データの問題に直接対処します。

コードに関しては、コントローラーの単体テスト方法に関するJag Reehalによるこのブログ投稿をご覧ください。

[HttpPost]
public ActionResult Create(SomeViewModel model)
{
  if (ModelState.IsValid)
  {
     // do some stuff that saves your data and then...
     return RedirectToAction("Success");
  }
  else
  {
     // your model is not valid so return the form back to the user for 
     // additional modifications.
     return View(model);
  }   
}

注: 上記はModelStateデータの検証に使用されますが、このパターンでも使用できる独自の検証およびエラー チェック ルーチンのセットを使用することができます。

于 2010-10-07T19:50:37.083 に答える