Где я могу найти список ошибок, из-за которых ModelState становится недействительной? Я не видел никаких ошибок в объекте ModelState.
120
Где я могу найти список ошибок, из-за которых ModelState становится недействительной? Я не видел никаких ошибок в объекте ModelState.
О том, «может ли быть 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.
Поскольку вы, вероятно, программируете в Visual Studio, вам лучше воспользоваться возможностью использования точек останова для таких простых шагов отладки (чтобы понять, в чем проблема, как в вашем случае). Просто поместите их прямо перед / в том месте, где вы проверяете ModelState.isValid, и наведите курсор на ModelState. Теперь вы можете легко просмотреть все значения внутри и увидеть, какая ошибка вызывает isvalid return false.
источник
var asdf = ModelState.Values.Where(v => v.Errors.Count > 0);
могу помочь вамВставьте приведенный ниже код в ActionResult вашего контроллера и поместите отладчик в этот момент.
источник
или повторите с
источник
Иногда связыватель выдает исключение без сообщения об ошибке. Вы можете получить исключение с помощью следующего фрагмента, чтобы выяснить, что не так:
(Часто, если связыватель пытается преобразовать строки в сложные типы и т. Д.)
источник
Если вы удалите проверку для ModelsState.IsValid и допустите ошибку, если вы скопируете эту строку
((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors
и вставите ее в раздел просмотра в Visual Studio, она точно выдаст вам ошибку. Экономит время, проверяя, где находится ошибка.источник
Свойство ModelState на контроллере фактически является объектом ModelStateDictionary. Вы можете перебирать ключи в словаре и использовать метод IsValidField, чтобы проверить, действительно ли это конкретное поле.
источник
Как только что случилось со мной - это также может произойти, когда вы добавляете необходимое свойство в свою модель, не обновляя форму. В этом случае ValidationSummary не будет отображать сообщение об ошибке.
источник