C # .NET MVC3 ModelState.IsValid - PullRequest
       3

C # .NET MVC3 ModelState.IsValid

13 голосов
/ 01 апреля 2011

Я использую 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);
    }  
}

спасибо

Ответы [ 3 ]

35 голосов
/ 01 апреля 2011

Чтобы получить список ошибок в состоянии модели:

var errors = ModelState
    .Where(x => x.Value.Errors.Count > 0)
    .Select(x => new { x.Key, x.Value.Errors })
    .ToArray();

Затем поставьте точку останова на этой строке и проверьте переменную errors. Появится список свойств вашей модели с соответствующими ошибками.

2 голосов
/ 01 апреля 2011

Вы можете найти ошибки в коллекции ModelState.Values.Каждое значение имеет коллекцию ошибок, которая содержит все ошибки модели для этого свойства.

var errors = from v in ModelState.Values 
             where v.Errors.Count > 0 
             select v.Errors;
0 голосов
/ 05 мая 2012

ТАК сообщение

Опираясь на ответ @ 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);
                }
            } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...