c# - Web Api 2 中的模型 [FromBody] 和 Guid 映射

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

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

这是我的模型示例

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

我在我的 Controller 上执行以下操作,我将 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 值映射?

最佳答案

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

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

关于c# - Web Api 2 中的模型 [FromBody] 和 Guid 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27151930/

相关文章:

c# - 如何在 Microsoft Graph 中使用 DI

c# - 向breececontroller发送大的json数据失败

c# - Linq to Xml,保持 XDocument 加载?

c# - CaSTLe Windsor 在哪里以及如何建立伐木设施

c# - 在 asp.net 上使用 ajax 创建动态控件

C# Linq Guid 匿名类型问题

formatting - .NET GUID 大写字符串格式

guid - GUID 和 UUID 之间有什么区别?

azure - 使用 Azure 应用服务轻松身份验证 + Azure AD B2C 是否可以保护单个 Web API 并让多个 native 应用程序使用它?

c# - C#中类的默认访问修饰符