MVC4 Razor を読み込むときにすべてのフィールドを空にする最も効果的な方法は何ですか (たとえば、最初の読み込みまたはページに戻った後)? 可能であれば、Javascript/jQuery を使用する代わりに Razor プロパティを使用する方法を教えてください。
3 に答える
あなたが何をしようとしているのかを理解するのは少し難しいですが、私がお手伝いできるかどうか見てみましょう.
まず、投稿後にフォームの値を単純に消去したい場合は、次のように実行できます。
[HttpPost]
public ActionResult Index(ViewModel model)
{
ModelState.Clear();
model = new ViewModel();
return View(model);
}
ディクショナリはフォームに古い値を再入力しようとするため、単に新しいものを作成するだけViewModel
では十分ではありません。ModelState
これはあなたが望むことをしますが、あなたが望むことをするためにMVCを実際に活用していません。
より良い方法は、フォームを表示するために使用するアクションにリダイレクトすることです。このようなもの:
public ActionResult Create()
{
var model = new ViewModel();
return View(model);
}
これは、空のモデルをフォームに渡すだけです。ユーザーがフォームに入力し、サーバーにポストされたら、次のように処理できます。
[HttpPost]
public ActionResult Create(ViewModel model)
{
if (ModelState.IsValid)
{
// Form data is valid so redirect back to display the form again
return RedirectToAction("Create");
}
// If we get here, redisplay the form with the fields filled in
// and errors shown
return View(model);
}
a を呼び出すだけでModelState.Clear()
うまくいきます。ビュー モデルを再度インスタンス化する必要はありません。
ビューは、モデルに関する情報を表示 (または収集) します。
したがって、空のモデル (つまり、null または空白またはデフォルト値のプロパティ) を渡すと、「すべてのフィールドがクリア」されます。
ビューを表示する Action を再度呼び出して、空のモデルを渡すだけです。
編集: JavaScriptで実行できますが、デフォルト値のロジックを複製して維持する必要があります。