asp.net mvc webApi를 처음 사용하고 ProductViewModel이라는 매개 변수가있는 Post/Put 메서드가 있습니다. 내 오류의 List<>
를 얻을 수 확장으로 GetErrors()
방법을 가지고ModelState asp.net mvc web api에서 작동하는 방법?
public HttpResponseMessage Post([FromBody] ProductViewModel value)
{
if (ModelState.IsValid)
{
// persist data here...
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.GetErrors());
}
이 뷰 모델의 일부 속성은 다음과 같은 Required
, StringLenght
등 ... 나는이 같은 포스트 방법을 검증하는 데이터 주석이 있습니다 클라이언트에게 전달하십시오. 내 질문은 : ModelState가 작동하지 않는 이유는 무엇입니까?
ViewModel의 속성에 null을 전달하면이 유효성 검사가 작동하지 않습니다. IsValid
속성은 항상 true
입니다. 이 문제를 해결하고 MVC와 같은 ModelState 작업을 수행 할 수있는 방법이 있습니까?
내 모델은 다음과 같습니다
public class ProductViewModel
{
[Display(ResourceType = typeof(Resources.Global), Name = "Name")]
[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Required")]
[StringLength(100, ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Range")]
public string Name { get; set; }
[Display(ResourceType = typeof(Resources.Global), Name = "ShortName")]
[Required(ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Required")]
[StringLength(20, ErrorMessageResourceType = typeof(Resources.Global), ErrorMessageResourceName = "Range")]
public string ShortName { get; set; }
}
감사합니다.
예, 나는'콘텐츠 형식 통과했다 : 피들러에 의해 응용 프로그램/json',이 권리를? 개체 'ProductViewModel'이 생성되고 속성으로 채워지지만 ModelState.IsValid는 항상 true입니다. REquired가있는 속성이있는 경우 중요하지 않습니다.'IsValid'는 항상 true입니다. asp.net mvc webapi의 버그입니까? –
콘텐츠 유형이 올바른 것처럼 보입니다 ... 귀하의 모델이 어떻게 보이는지, 또한 Fiddler의 원시 요청을 공유 할 수 있습니까? –
내 게시물을 편집하고 내 모델을 살펴보고 몇 가지 유효성 검사가있는 두 개의 속성 만 살펴 보았습니다. {{Name : null, ShortName : "}}, 유효성을 테스트하기 위해서만 유효하지만, ORM의 도구 (nhibernate)에 대한 다른 예외가 있습니다. –