When Working with MVC Model Validations, You may come across a situation where you think you filled all the Required Items in the Form and submitted, but still the ModelState.IsValid property is returning false. I came across this scenario once when i was inherting  a ViewModel from another ViewModel. How do we know what is causing the IsValid property to return false ?

You can check the ViewData.ModelState.Values collection and see what are the Errors. Here is the sample code

 

[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);
 }
}