ModelState. IsValid == ложь, почему?

Где я могу найти список ошибок, из которых делают ModelState недопустимым? Я не видел ошибочного свойства на объекте ModelState.

108
задан ArunPratap 30 July 2019 в 13:13
поделиться

4 ответа

О «может быть, 0 ошибок и IsValid == false»: вот исходный код MVC из https://github.com/Microsoft/referencesource/blob/master/System .Web / ModelBinding / ModelStateDictionary.cs # L37-L41

public bool IsValid {
    get {
        return Values.All(modelState => modelState.Errors.Count == 0);
    }
}

Теперь похоже, что этого не может быть. Что ж, это для ASP.NET MVC v1.

43
ответ дан 24 November 2019 в 03:26
поделиться

Поскольку вы, вероятно, программируете в Visual Studio, вам лучше воспользоваться возможностью использования точек останова для таких простых шагов отладки (чтобы понять, в чем проблема, как в вашем случае). Просто разместите их прямо перед / в том месте, где вы проверяете ModelState.isValid, и наведите курсор на ModelState. Теперь вы можете легко просмотреть все значения внутри и увидеть, какая ошибка вызывает isvalid return false.

modelstate

244
ответ дан 24 November 2019 в 03:26
поделиться
bool hasErrors =  ViewData.ModelState.Values.Any(x => x.Errors.Count > 1);

или итерация с

    foreach (ModelState state in ViewData.ModelState.Values.Where(x => x.Errors.Count > 0))
    {

    }
22
ответ дан 24 November 2019 в 03:26
поделиться

Свойство ModelState в контроллере фактически является объектом ModelStateDictionary. Вы можете перебирать ключи в словаре и использовать метод IsValidField, чтобы проверить, действительно ли это конкретное поле.

3
ответ дан 24 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: