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 的用途。这就是当您在查询字符串中传递该值时该值起作用的原因。
我正在尝试从包含枚举的端点绑定 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 的用途。这就是当您在查询字符串中传递该值时该值起作用的原因。