【发布时间】:2018-06-18 05:17:33
【问题描述】:
在我拥有的 Asp.Net Web API 控制器中,有一个 PostAsync 方法将请求 JSON 主体绑定到模型类。
例如:
public class EmployeesController : ApiController
{
...
public async Task<HttpResponseMessage> PostAsync([FromBody] Employee employee)
{
...
}
...
}
Employee 模型类包含一个数字属性 Height:
public class Employee
{
...
public decimal Height { get; set; }
...
}
问题在于,当使用包含前导零的高度值的请求负载发布到上述控制器操作时,FromBodyAttribute 绑定器自动将该值转换为八进制,例如:010 被转换为十进制的值 8 .
示例请求正文:
{
...
"Height": 010,
...
}
如何防止转换为八进制基数?
到目前为止我已经尝试过:
- 像this blog post 中描述的那样实现
PropertyBindAttribute,但属性在转换为八进制基数后接收值,因此在绑定生命周期中使用此方法为时已晚 - 将属性转换为字符串类型,并使用自定义
ValidationAttribute来验证字符串的格式是否匹配数字十进制基值,然后将值转换为十进制并将其分配给另一个十进制属性/支持字段
【问题讨论】:
标签: asp.net json asp.net-web-api deserialization octal