17

ModelState.IsValidがfalseの場合にエラーが含まれるModelStateのキーを特定するにはどうすればよいですか?通常、マウスをModelState.Valuesリストにカーソルを合わせると、エラー数が0より大きいかどうかを項目ごとに確認します。しかし、現在は、合計252個のModelState項目(各オブジェクトの各項目)の複雑なオブジェクトのリストを含むビューで作業しています。各リストのModelState.Keysにエントリがあります)。

それで、エラーの原因を指摘する簡単な方法はありますか?

4

2 に答える 2

32

コレクションをチェックしViewData.ModelState.Valuesて、エラーとは何かを確認できます。

[Httpost]
public ActionResult Create(User model)
{
   if(ModelState.IsValid)
   {
     //Save and redirect
   }
   else
   {
     foreach (var modelStateVal in ViewData.ModelState.Values)
     {
       foreach (var error in modelStateVal.Errors)
       {               
          var errorMessage = error.ErrorMessage;
          var exception = error.Exception;
          // You may log the errors if you want
       }
     }
   }         
   return View(model);
 }
}

キー(プロパティ名)が本当に必要な場合は、ModelState.Keys

foreach (var modelStateKey in ViewData.ModelState.Keys)
{
    var modelStateVal = ViewData.ModelState[modelStateKey];
    foreach (var error in modelStateVal.Errors)
    {
        var key = modelStateKey; 
        var errorMessage = error.ErrorMessage;
        var exception = error.Exception;
        // You may log the errors if you want
    }
}
于 2013-03-08T14:21:23.233 に答える
2
ModelState.Values.SelectMany(v => v.Errors);

クリーナーと見なされます。

于 2013-07-08T15:23:16.013 に答える