2017-11-17 22 views
0

웹 API --->부울 필드

public async Task<IHttpActionResult> CreatePost(ChildClient c) 
{ 

if(!ModelState.IsValid) { 
throw ... 
} 
.. 

} 
public class Client 
    { 
     [Required] 
     public bool HasBaseValue { get; set; } = true; 
     [Required] 
     public string Name { get; set; } = "stringvalue"; 
    } 
    public class ChildClient : Client 
    { 
     [Required] 
     public bool HasFieldValue { get; set; } = true; 
     [Required] 
     public string Name1 { get; set; } = "stringvalue"; 
    } 

ModelState.Keys의 기본값이 작동하지 ModelState.Isvalid 오류를 다음 제공합니다 HasBaseValue, HasFieldValue을 두 필드가 제공되지 않는 경우. 기본값이 설정되어 있어도 오류 필드에 여전히 표시되는 이유 참고 : 디버그 및 중단 점으로 확인할 때 기본값은 이미 'c 개체'에 채워져 있습니다.

+0

값은 이미 c로 채워집니다. weired 문제는 Name과 Name1 필드가 제공되지는 않지만 문제를 일으키는 부울 필드가 문제가되지 않는다는 것입니다. – user3711357

답변

0

유효성을 검사하려면 ModelState.IsValid에서 해당 필드를 건너 뜁니다. 이러한 기본값 값 필드는 게시되지 않으므로 ModelState.IsValid는 유효하지 않은 것으로 간주합니다 (API에서 기본값을 채우지 만 ModelState.IsValid는 게시 된 값의 유효성 만 검사하기 때문에).