【发布时间】:2014-11-17 09:25:38
【问题描述】:
我 2 年后的第一篇文章。我的所有问题都已得到解答 - 直到现在。
我正在使用 ASP.NET WebApi 2。我正在发送一个带有前导零的字符串。例如通过 jqgrid:
myGrid = $("#myGrid").jqGrid({
url: 'api/Customer',
datatype: "json",
ajaxGridOptions: { contentType: "application/json" },
mtype: "POST",
postData: "000951003684"
});
ApiController 看起来像:
public class CustomerController : ApiController
{
[HttpPost]
public void Post([FromBody]string customerNumber)
{
if (!string.IsNullOrEmpty(customerNumber))
{
factory.CreateDbService().GetCustomer(customerNumber);
}
}
}
问题是“customerNumber”的值是“951003684”,而不是预期的“000951003684”。 在我看来这很奇怪,因为该函数需要一个字符串而不是整数值。 尽管该函数需要一个字符串值,但似乎 WebApi 使用了一个整数格式化程序。实际上没有必要使用整数格式化程序。
有人知道如何使用前导零访问整个字符串吗? 或者换句话说:如何配置WebApi,使前导零不被切掉?
编辑: 现在我确定 WebApi 使用整数格式化程序,因为如果我传递一个字符串(例如“hallo World”),我的变量“customerNumber”是 NULL
我已经尝试从 Firefox RESTClient-Tool 发送相同的请求。相同的行为。
【问题讨论】:
-
您的网络服务“切断”前导零。您可能想尝试用 ' ' 替换它们(不间断空间)并在您的服务器上进行反向操作
-
使用 Fiddler 查看实际发送到服务的内容,不要假设 WebAPI 决定将您的数据视为整数。可能是jqGrid在将
postData序列化为json时决定将id作为整数发送。 -
@Crunch NULL 表示 body 未被识别为 Json,而不是 WebAPI 认为它是一个整数。
标签: c# asp.net asp.net-web-api jqgrid