【问题标题】:ASP.NET Web Api 2 - Model binding with EnumsASP.NET Web Api 2 - 与枚举的模型绑定
【发布时间】:2016-05-23 08:18:44
【问题描述】:

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

示例

 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 将值传递给枚举,但这不是我想要在这里实现的。

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

【问题讨论】:

  • 你试过"Gender": 0吗?

标签: c# asp.net-web-api model-binding


【解决方案1】:

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

public int GenderCode{ get; set;}

并将枚举属性传递给 get only :

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我意识到这一点,男生错误。我没有对此进行测试并意识到错误.. Duh
    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多