jquery - ASP.NET Web API 中的空模型

标签 jquery asp.net-web-api

我在使模型绑定(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/

相关文章:

javascript - 访问加载范围内定义的函数的技巧

security - 如何在客户端保留不记名 token

c# - 在 web api 2 的集成测试中使用 Autofac

c# - 与 SimpleMembershipProvider 兼容的 ASP.NET Web API?

针对 ASP.NET 基本服务的 iOS 首次身份验证速度较慢

jquery - 添加 MaxWidth/MaxHeight 到 JQuery Supersized

javascript - jQuery 在淡入之前淡出

c# - 当我在 gridview 中过滤行没有找到记录时如何禁用导出按钮

javascript - Jade 中的onclick事件

rest - ASP.NET Web Api 路由自定义