2016-04-01 18 views
2

ASP.Net MVC6のモデルの一部のプロパティのモデル検証を削除する方法はありますか? ASP.NET MVCのModelStateエラーを削除します

は、私が使用することを提案している。このポスト Is there a strongly-named way to remove ModelState errors in ASP.NET MVC

、ModelBindingHelper.ClearValidationStateForModel(タイプ、ModelStateDictionary、IModelMetadataProvider、文字列)に出くわしました。

しかし、私はこれ以上の助けを見つけることができません。

ClearValidationStateForModelを使用してモデルプロパティを削除する作業例をお勧めしますか?

+0

あなたは何をしようとしていますか?いくつかのプロパティに対してモデル検証エラーを削除したいですか? – Shyju

答えて

2

CreatePostビューモデルのTitleプロパティの検証エラーを削除する必要があります。

[HttpPost] 
public ActionResult Create(CreatePost model) 
{ 
    if (ModelState.IsValid) 
    { 
     //to do : Save and return something 
    } 
    ModelBindingHelper.ClearValidationStateForModel(model.GetType(), 
               ModelState,MetadataProvider,"Title");   
    return View(model); 
} 

また、ModelState.ClearValidationStateも機能します。

ModelState.ClearValidationState("Title"); 

EDIT:コメントごとに、OPは、別のプロパティ値に基づいて検証される特定のプロパティを除外したいとします。これは正常に動作するはずです。

[HttpPost] 
public ActionResult Create(CreatePost model) //CreatePost model 
{ 
    if (model.Type == 1) 
    { 
     ModelBindingHelper.ClearValidationStateForModel(model.GetType(), 
                ModelState, MetadataProvider, "Title"); 
    } 
    if (ModelState.IsValid) 
    { 
     // to do : Do useful stuff and return something 
    } 
    return View(model); 
} 
+0

これらの両方は、ASP.Net MVCに以下6 を動作していないように私はそれを使用しています方法です: [HttpPost] 公共のActionResult(CreatePostモデル)を作成します { //私はスキップしたいですタイトルの検証であるため、ModelState.IsValidをチェックする前にこの行を追加しました。 ModelBindingHelper.ClearValidationStateForModel(model.GetType()、ModelState、MetadataProvider、 "Title"); 場合(ModelState.IsValid) {// に実行します。保存して何かを返す } リターンビュー(モデル); } –

+0

MVC6で動作しないとはどういう意味ですか? MVC 6プロジェクトでこれを確認したところ、うまくいきました(dnx 451とdnxcore50の両方)。具体的に何があなたのために働いていないのですか? – Shyju

+0

私はモデルの中でそれぞれ異なるプロパティを持っていますが、TypeとOtherはDurationです。選択したタイプが1の場合はDurationの検証をスキップしたいが、他のすべてのタイプの場合は検証を実行したい。 MVC5 ModelState.Remove( "Duration"); ModelState.IsValidをチェックする前に、これはMVC 6では動作しないようです。私はあなたの提案したソリューション、つまりModelState.ClearValidationState( "Duration")も試しました。 ModelState.IsValidをチェックする前に、ModelState.IsValidが失敗したとして返されます。モデルの他のすべてのプロパティに有効なデータがあることを確認しました。 –

関連する問題