ASP.NET WebAPI将urlencoded body中的空字符串传递为null
我有一个简单的ApiController
public HttpResponseMessage Put(int orderid, [FromBody] Order order)
{
// Do something useful with order.Notes here
}
和一个类(实际的类包含更多的属性)
public class Order
{
public string Notes { get; set; }
}
并希望处理以下类型的PUT请求
PUT http://localhost/api/orders/{orderid}
Content-Type: application/x-www-form-urlencoded
notes=sometext
一切工作正常,但空值传递为null
notes=blah // passes blah
notes= // Passes null
someothervalue=blah // Passes null
ApiController是否可以区分空值和缺失值?
您是否尝试使用DisplayFormatAttribute注释该属性,
public class Order
{
[DisplayFormat(ConvertEmptyStringToNull=false)]
public string Notes { get; set; }
}
它的根源自于调用string.IsNullOrWhiteSpace
而不是string.IsNullOrEmpty
的ReplaceEmptyStringWithNull
要在整个WebAPI项目中解决这个问题,您需要将ModelMetadataProvider
将ConvertEmptyStringToNull
设置为false
请参阅将DisplayFormatAttribute.ConvertEmptyStringToNull的默认值设置为false
这实际上是在v6中“固定” - 请参阅https://github.com/aspnet/Mvc/issues/3593
链接地址: http://www.djcxy.com/p/68903.html上一篇: ASP.NET WebAPI passing empty string in urlencoded body as null