2009-11-20 3 views
5

asp.net mvcでポストバック後にフィールドをクリアするにはどうすればいいですか?今のように、検証エラーが発生すると、フィールドにはユーザーが入力したものが何でも入力されたままになります。ただし、検証エラーが発生しない場合は、すべてのフィールドをクリアしてメッセージを表示することができます。asp.net mvcでポストバックした後フィールドをクリアするには?

今私はViewDataを使用して表示を成功させましたが、フィールドをクリアする方法がわかりません。

答えて

0

あなたは、ユーザーがページを更新し、それが再び提出したくないので、PRG (Post Redirect Get) patternのための仕事のようですね。

これを行うには、オリジナルのURLにリダイレクトしてからユーザーにメッセージを表示するときに、そのメッセージを確認できるように、メッセージまたはフラグをTempDataに入れます。

2

はフィル・ハークは言った:

あなたが あなたのコントローラのアクション内からビューを返す前に

ModelState["value1"].Value = new 
ValueProviderResult(null, 
string.Empty, 
CultureInfo.InvariantCulture); 

を呼び出してみてください。

これは、すべてのエラー をキー「value1」に関連付けますが、 は値を空の 値に置き換えます。

From this SO question

-1

ビューにモデルをポストバックするときに、モデル、新しい参照を割り当てることができます。
このようなものです。

if (ModelState.IsValid) 
    { 
     //Do your stuff here. 

     yourModel = new Moodel(); 
     return View(yourModel); 

    } 

このシナリオでは、すべてのモデルフィールドは空白で、フォームには何も表示されません。

+0

、ModelState.Clearは() –

8

これを試してみてください:これは動作しません

if(ModelState.IsValid) 
{ 
    ModelState.Clear(); 
} 
return View(); 
+0

もこの行の後にあなたにModelStateエラーを設定したい場合がありますがありません:) – stuartdotnet

関連する問題