2014-11-26 7 views
3

웹 API 2를 구현 중이며 Guid 매핑의 이상한 동작을 발견했습니다. 여기 내 문제 정의모델 [FromBody] 및 Web Api 2의 Guid 매핑

이 내 모델 예를 입력 [FromBody]

[HttpPost, Route("create")] 
public IHttpActionResult Create([FromBody]MyModel model) 
{ 
    // some implementation 
} 

모든이의 GUID 대신 잘 작동으로 내가 MyModel이 내 컨트롤러에 대한 조치를 수행 한

public class MyModel 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

을이다 맵핑. 내가 요청 본문에 새로운 MyModel의 JSON을 게시 할 때 :

{ 
    "Id":"1d93dfa2-sb34-403d-a766-bdcf1cf47a71", 
    "Name":"name" 
} 

이름은 "이름"으로 올바르게 설정되어 있지만 GUID를 새 GUID로 생성 할 때마다입니다.

이 문제를 일으킬 수있는 원인은 무엇입니까? Guid 값의 올바른 매핑을 설정하려면 어떻게해야합니까?

답변

2

1d93dfa2-sb34-403d-a766-bdcf1cf47a71은 유효한 GUID가 아닙니다.

guids에는 s이 포함되어 있기 때문에 0-9a-f 만 포함되어 있으므로 올바른 GUID가 아니므로 모델 바인더는 모델의 해당 속성에 아무 것도 바인딩하지 않습니다.

+0

네가 맞습니다. 실수로 -> d 대신 a -> s를 수정합니다. 그럼에도 불구하고, 나는이 경우 new guid가 아닌 예외를 기대할 것이다. –

+0

"new guid"라고하면 '9a3fb67d-cc00-409e-b7e8-5f4c8ef806ac' (또는 이와 유사) 또는'00000000-0000-0000-0000-000000000000'입니까? –

+0

@ dav_i 테스트를 마쳤습니다. 00000000-0000-0000-0000-000000000000이므로 새로운 Guid는 아니지만 빈 Guid입니다. –