ModelState.IsValid == false, 그 이유는 무엇입니까?
ModelState를 유효하지 않게 만드는 오류 목록은 어디에서 찾을 수 있습니까? ModelState 개체에 오류 속성이 표시되지 않았습니다.
"오류가 0 개이고 IsValid == false 일 수 있습니까?"정보 : https://github.com/Microsoft/referencesource/blob/master/System.Web/ModelBinding/ModelStateDictionary.cs#L37-L41 의 MVC 소스 코드는 다음과 같습니다.
public bool IsValid {
get {
return Values.All(modelState => modelState.Errors.Count == 0);
}
}
이제 그럴 수없는 것 같습니다. 그것은 ASP.NET MVC v1을위한 것입니다.
아마도 Visual Studio에서 프로그래밍 할 것이므로 쉬운 디버깅 단계에 중단 점을 사용할 수있는 가능성을 활용하는 것이 좋습니다 (문제가 귀하의 경우에 어떤 것인지 파악). ModelState.isValid를 확인하고 ModelState 위로 마우스를 가져 가면 바로 앞 / 위치에 배치하십시오. 이제 내부의 모든 값을 쉽게 찾아보고 어떤 오류가 isvalid가 false를 반환하는지 확인할 수 있습니다.
bool hasErrors = ViewData.ModelState.Values.Any(x => x.Errors.Count > 1);
또는 반복
foreach (ModelState state in ViewData.ModelState.Values.Where(x => x.Errors.Count > 0))
{
}
컨트롤러의 ActionResult에 아래 코드를 붙여넣고이 지점에 디버거를 배치합니다.
var errors = ModelState
.Where(x => x.Value.Errors.Count > 0)
.Select(x => new { x.Key, x.Value.Errors })
.ToArray();
때때로 바인더에서 오류 메시지없이 예외가 발생합니다. 다음 스 니펫으로 예외를 검색하여 무엇이 잘못되었는지 찾을 수 있습니다.
(종종 바인더가 문자열을 복합 유형 등으로 변환하려는 경우)
if (!ModelState.IsValid)
{
var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception));
// Breakpoint, Log or examine the list with Exceptions.
}
ModelsState.IsValid에 대한 검사를 제거하고 오류가 발생하도록하는 경우이 줄을 복사 ((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors
하여 Visual Studio의 감시 섹션에 붙여 넣으면 오류가 정확히 무엇인지 알려줍니다. 오류가있는 위치를 확인하는 데 많은 시간을 절약합니다.
컨트롤러의 ModelState 속성은 실제로 ModelStateDictionary 개체입니다. 사전의 키를 반복하고 IsValidField 메서드를 사용하여 특정 필드가 유효한지 확인할 수 있습니다.
나에게 일어난 것처럼-이것은 양식을 업데이트하지 않고 모델에 필수 속성을 추가 할 때도 발생할 수 있습니다. 이 경우 ValidationSummary는 오류 메시지를 나열하지 않습니다.
참고 URL : https://stackoverflow.com/questions/1791570/modelstate-isvalid-false-why
'program story' 카테고리의 다른 글
문서 폴더의 파일 목록 가져 오기 (0) | 2020.08.08 |
---|---|
앱이 실행되는 동안 Android 비활성화 화면 시간 초과 (0) | 2020.08.08 |
C ++ 맵에서 키 반복 (0) | 2020.08.08 |
확장 구성을 편집 한 후 VScode를 다시 시작하는 방법은 무엇입니까? (0) | 2020.08.07 |
Switch Statement Fallthrough… 허용되어야합니까? (0) | 2020.08.07 |