참조 유형에 [필수]를 넣고 일치하는 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>
언제나 가치가 있지 않습니까? 클래스를 인스턴스화 할 때, 명시 적으로 다른 값으로 설정되지 않으면 'Field1'의 값은 0이됩니다. –
예. 하지만 FieldSt가 명시 적으로 제공되지 않은 경우 ModelState를 무효화하고 요청을 거부하려고합니다. – Hoppe
* nullable 값 유형을 제외하고 * - 왜이 접근 방식을 할인 했습니까? –