我在使模型绑定(bind)在新的 ASP.NET Web API 中工作时遇到问题。
我使用 jQuery 来发布帖子,客户端 JavaScript 如下所示:
function postJsonSettings() {
return {
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
xhrFields: {
withCredentials: true
}
};
}
function createCustomer(customer) {
var settings = postJsonSettings();
settings.data = JSON.stringify({ model: customer });
return $.ajax(Payboard.Util.getAbsoluteUrl('/api/customers'), settings);
}
结果如下所示:
POST /api/customers HTTP/1.1
Host: dev.payboard.com
Connection: keep-alive
Content-Length: 89
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://www.payboardapitest.com
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: http://www.payboardapitest.com/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
使用这样的 POST 负载:
{"model":{"ExternalCustomerId":"6c5015c8-d04e-4309-a493-ec0355d1b3a0","Name":"asdfasdf"}}
被调用的 C# Web API 方法如下所示:
// POST api/customers
public void Post([FromBody] CreateCustomerModel model)
{
// Do stuff
}
使用如下所示的 CreateCustomerModel:
public class CreateCustomerModel
{
[Required]
public string ExternalCustomerId { get; set; }
[Required]
public string Name { get; set; }
}
调用 CustomerController.Post()
方法,并且 model
本身不为 null,但 ExternalCustomerId
和 名称
属性是。
有什么明显的事情表明我做错了吗?
最佳答案
尝试删除 JSON 负载中的“模型”,然后仅发送 CreateCustomerModel 对象的值。即
{"ExternalCustomerId":"6c5015c8-d04e-4309-a493-ec0355d1b3a0","Name":"asdfasdf"}
关于jquery - ASP.NET Web API 中的空模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18725220/