asp.net mvcでポストバック後にフィールドをクリアするにはどうすればいいですか?今のように、検証エラーが発生すると、フィールドにはユーザーが入力したものが何でも入力されたままになります。ただし、検証エラーが発生しない場合は、すべてのフィールドをクリアしてメッセージを表示することができます。asp.net mvcでポストバックした後フィールドをクリアするには?
今私はViewDataを使用して表示を成功させましたが、フィールドをクリアする方法がわかりません。
asp.net mvcでポストバック後にフィールドをクリアするにはどうすればいいですか?今のように、検証エラーが発生すると、フィールドにはユーザーが入力したものが何でも入力されたままになります。ただし、検証エラーが発生しない場合は、すべてのフィールドをクリアしてメッセージを表示することができます。asp.net mvcでポストバックした後フィールドをクリアするには?
今私はViewDataを使用して表示を成功させましたが、フィールドをクリアする方法がわかりません。
あなたは、ユーザーがページを更新し、それが再び提出したくないので、PRG (Post Redirect Get) patternのための仕事のようですね。
これを行うには、オリジナルのURLにリダイレクトしてからユーザーにメッセージを表示するときに、そのメッセージを確認できるように、メッセージまたはフラグをTempDataに入れます。
はフィル・ハークは言った:
あなたが あなたのコントローラのアクション内からビューを返す前に
ModelState["value1"].Value = new
ValueProviderResult(null,
string.Empty,
CultureInfo.InvariantCulture);
を呼び出してみてください。
これは、すべてのエラー をキー「value1」に関連付けますが、 は値を空の 値に置き換えます。
ビューにモデルをポストバックするときに、モデル、新しい参照を割り当てることができます。
このようなものです。
if (ModelState.IsValid)
{
//Do your stuff here.
yourModel = new Moodel();
return View(yourModel);
}
このシナリオでは、すべてのモデルフィールドは空白で、フォームには何も表示されません。
これを試してみてください:これは動作しません
if(ModelState.IsValid)
{
ModelState.Clear();
}
return View();
もこの行の後にあなたにModelStateエラーを設定したい場合がありますがありません:) – stuartdotnet
、ModelState.Clearは() –