2016-08-12 4 views
1

MVC 5および.NET Framework 4.5を初めて使用していて、問題が発生しました。私はフォームを持っていて、エラーが発生したときにフォームのフィールドをリセットしたいが、エラーを保存してユーザーに表示したい。現在、私はエラー時にフィールドをクリアすることができますが、これもエラーを取り除きます。私は試しましたフォームをクリアするときのエラー(MVC)

originalModel.field= ""; 

しかし、これはフィールドをクリアしません。私もちょうど使用しようとしました

ModelState.Clear(); 

しかし、これは何もしません。

これは、私は現在、(すべてをクリアしている)で働いているものです:

if (!ModelState.IsValid) 
{ 
    TestModel blank= new TestModel(); 
    ModelState.Clear(); 
    return View("View.cshtml", blank); 
} 
+0

一般的に、フォームと検証エラーを処理するための好ましい方法は、データをそのままにしてエラーを表示することです。検証エラーが発生したフィールドのデータをユーザーに更新させます。 – Igor

答えて

1

あなたは絶対にこの動作が必要な場合は、空の文字列にビューモデルのこのプロパティの値を移動して設定することができますModelstate辞書にあります。

[HttpPost] 
public virtual ActionResult Index(CreatePostVm model) 
{ 
    if (ModelState.IsValid == false) 
    { 
    ModelState["PostTitle"].Value = 
      new ValueProviderResult(string.Empty, string.Empty,CultureInfo.InvariantCulture); 

    return View(model); 
    } 
    // to do : Return something 
} 

上記のコードは、空のテキストにあなたのCreatePostVmビューモデルのPostTitleプロパティを設定します。したがって、入力フィールドは空文字になり、PostTitleフィールドの検証エラーメッセージが表示されます。

関連する問題