これを実現する方法は、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
データの検証に使用されますが、このパターンでも使用できる独自の検証およびエラー チェック ルーチンのセットを使用することができます。