ASP.NET Web Api 2 - 与Enums的模型绑定

时间:2016-02-12 08:48:19

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

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

示例

.clearfix:after {
           content: " ";
           visibility: hidden;
           display: block;
           height: 0;
           clear: both;
        }
        .container{         
            margin: 0 auto;
            width: 70%;
        }
        .blocks .image, .blocks .lines{ 
            float: left;
        }
        .blocks .image {
            border: 1px solid grey;
            margin: 5px;
            height: 100px;
            width: 100px;
        }

行动签名如下: -

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

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

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

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

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

我是否需要创建类型转换器,或者有什么简单的我缺少?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

public int GenderCode{ get; set;}

并在get only中传递enum属性:

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

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