在Web Api 2中模型[FromBody]和Guid映射

时间:2014-11-26 14:42:25

标签: c# guid asp.net-web-api2

我正在实施web api 2,我发现了Guid映射的奇怪行为。这是我的问题定义

这是我的模型示例

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

我在我的控制器上有以下操作,我将MyModel作为输入[FromBody]

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

一切正常而不是Guid映射。当我在请求正文中发布新MyModel的JSON时:

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

名称被正确设置为“名称”,但Guid每次都是作为新Guid生成的。

请问这个问题有什么原因?如何设置Guid值的正确映射?

1 个答案:

答案 0 :(得分:2)

问题是1d93dfa2-sb34-403d-a766-bdcf1cf47a71不是有效的Guid。

Guids只包含0-9a-f,而您的字符串中包含s,因此不是有效的Guid,因此Model Binder不会将任何内容绑定到您的属性中模型。