1

참조 유형에 [필수]를 넣고 일치하는 JSON 속성없이 JSON을 제공하면 오류가 발생합니다.값 유형에 [필수] 적용 가능

nullable 값 형식을 사용하거나 클래스에서 값 형식을 래핑하는 것 외에도 Web API에 대한 요청을 deserialize 할 때 값 형식에 [Required]를 적용 할 수 있습니까?

기본값은 0으로 강제 설정되기 때문에 아래의 Test1에서 요구 사항이 적용되지 않습니다. 즉, JSON에 Field1 속성이 없으면 일련 화가 성공적으로 완료됩니다.

필자는 내 값 유형에 [필수]를 넣거나이를 수행하기 위해 새로운 속성을 쓸 수 있기를 바랍니다.

설정이 있습니까? 또는 XML 및 JSON 모두에 대한 비 직렬화를 활용하여이를 수행 할 수 있습니까?

public async Task<IHttpActionResult> Method1(Clas1 model){} 

public class Class1 
{ 
    ... 

    [Required] 
    public int Field1 { get; set; } 
} 

Although it may not be possible with attributes

, 이론적으로 디시리얼라이저는 값 형식으로 값을 강요하기 전에 속성을 확인 할 수있다. 그렇다면 내가 할 수있는 이벤트 나 설정이 있습니까?

Json.net에서는 [JsonProperty (Required = Required.AllowNull)] 속성을 추가 할 수 있습니다. XML 역 직렬화를 위해 할 수있는 비슷한 것이 있습니까?

즉 : 당신이 범위를 알고있는 경우

// POST api/Account/Register 
[AllowAnonymous] 
[Route("Register")] 
public async Task<IHttpActionResult> Register(RegisterBindingModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 

    var user = new ApplicationUser() { UserName = model.Email, Email = model.Email }; 

public class RegisterBindingModel //: IValidatableObject 
{ 
    [Required] 
    public string Email { get; set; } 

    public int Test1 { get; set; } 

    [Required] 
    public int Test3 { get; set; } 

<RegisterBindingModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebApplication1.Models"> 
    <Email>Sample string 2</Email> 
    <Test1>2</Test1> 
</RegisterBindingModel> 
+0

언제나 가치가 있지 않습니까? 클래스를 인스턴스화 할 때, 명시 적으로 다른 값으로 설정되지 않으면 'Field1'의 값은 0이됩니다. –

+0

예. 하지만 FieldSt가 명시 적으로 제공되지 않은 경우 ModelState를 무효화하고 요청을 거부하려고합니다. – Hoppe

+0

* nullable 값 유형을 제외하고 * - 왜이 접근 방식을 할인 했습니까? –

답변

1

, 당신은 범위 속성을 사용할 수 있습니다.

[Range(0, 99)] 
public int Field1{ get; set; } 
+0

나는 좀 더 견고한 것을 찾고 있습니다. 요청에 속성을 명시 적으로 제공하고 싶습니다. – Hoppe

관련 문제