С#.NET MVC3 ModelState.IsValid
Im, использующий JSON для отправки данных из формы, и ModelState.isValid() возвращает false, я помещаю WriteLine для всех входящих данных, и все выглядит точными данными, есть ли способ отображать ошибки состояния модели, чтобы выяснить, что такое не проверять?
этот точный код отлично работает с другими моделями
[HttpPost]
public ActionResult mobileCreateAction(Trip trip)
{
if (ModelState.IsValid)
{
System.Diagnostics.Debug.WriteLine("saving");
DB.Trips.Add(trip);
DB.SaveChanges();
return Json(new
{
success = true,
msg = "Success saving trip"
});
}
else
{
System.Diagnostics.Debug.WriteLine("invalid model state");
return Json(new
{
success = false,
msg = "Error saving trip"
}, JsonRequestBehavior.AllowGet);
}
}
спасибо
Ответы
Ответ 1
Чтобы получить список ошибок в состоянии модели:
var errors = ModelState
.Where(x => x.Value.Errors.Count > 0)
.Select(x => new { x.Key, x.Value.Errors })
.ToArray();
Затем положите точку прерывания на эту строку и проверите переменную errors
. Он предоставит вам список свойств вашей модели с соответствующими ошибками.
Ответ 2
Вы можете найти ошибки в коллекции ModelState.Values. Каждое значение имеет коллекцию ошибок, содержащую все ошибки модели для этого свойства.
var errors = from v in ModelState.Values
where v.Errors.Count > 0
select v.Errors;
Ответ 3
Сообщение SOA
Основываясь на @Darin, ответьте на сообщение, указанное выше, содержит код, необходимый для отображения сообщения "почему".
foreach (var obj in ModelState.Values)
{
foreach (var error in obj.Errors)
{
if (!string.IsNullOrEmpty(error.ErrorMessage))
System.Diagnostics.Debug.WriteLine("ERROR WHY = " + error.ErrorMessage);
}
}