ASP.NET Web Api 2 - 模型与枚举绑定

ASP.NET Web Api 2 - Model binding with Enums

我正在尝试从包含枚举的端点绑定 class 对象 :-

样本

 public class Person
    {
        public string Name { get; set; }
        public Gender Gender { get; set; }
    }

public enum Gender
    {
        Male = 0,
        Female = 1,
    }

动作签名如下:-

public async Task<IHttpActionResult> GetTest([FromBody] Person person)

当 Action 方法与请求正文中的以下对象命中时,模型绑定失败:-

{
  "Name": "Derek",
  "Gender": "Male"
} 

模型绑定确实有效,我通过 uri 为枚举传递值,但这不是我想要在这里实现的。

我需要创建类型转换器还是缺少一些简单的东西?

为您的枚举代码添加一个 属性 :

public int GenderCode{ get; set;}

并通过你枚举 属性 in get only :

public Gender Gender{ get { return (Gender)this.GenderCode; } }

并且在您看来,建议一个下拉列表来显示可能的性别值列表,并将用户的选择值分配给 属性 GenderCode。

如果您正在执行 GET 请求(我假设您是因为您的方法名称),您无法从正文中读取值,因为实际上没有任何数据被传递。这就是 POST 的用途。这就是当您在查询字符串中传递该值时该值起作用的原因。