在web api控制器上发布字符串null列表

时间:2014-11-04 10:44:06

标签: json string list post asp.net-web-api

在我的web api项目中,我有一个名为ContactController的控制器和一个名为Synchro的方法,它等待下面的字符串列表:

[HttpPost]
    [Route("api/Contact/Synchro")]
    public IHttpActionResult Synchro([FromBody]List<string> listNumTel)
    {
        List<Profil> listContact = new List<Profil>();
        if (listNumTel.Count() > 0)
        {
            try
            {
                listContact = Librairie.Contacts.getContactSync(listNumTel);
                return Ok(listContact);
            }
            catch(Exception e) {
                return InternalServerError(e);
            }
        }
        else
        {
            return BadRequest();
        }
    }

为了测试这种方法,我创建了下面的ajax:

$("#btn_synchro").click(function () {
    $.ajax({
        url: '../api/Contact/Synchro',
        type: 'POST',
        data: {
            "listNumTel": [
                "+33640512999",
                "+33640522997",
                "+33640182998",
                "+33640742996"]
        },
        dataType: 'json',
        success: function (data) {
            alert('Synchro réussi: ' + data);
        },
        error: function (request, error) {
            alert("Erreur lors de la synchro");
        }
    })
});

当我在调试模式下测试时,调用工作正常,但该方法获得一个空列表。我检查了json是否有效且确实如此。有人看到了什么可能是错的吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

感谢您的回答,但我刚刚找到了解决方案。这完全是关于JSON发送的。例如,要通过ajax调用发送字符串列表,JSON应该看起来像变量listNumero

("#btn_synchro").click(function () {
    var listNumero = 
        [   '+33640532999',
            '+33640532997',
            '+33640532998',
            '+33640532996'];

    $.ajax({
        url: '../api/Contact/Synchro',
        type: 'POST',
        data: JSON.stringify(listNumero),
        contentType: "application/json",
        dataType: 'json',
        success: function (data) {
            alert('Synchro réussi: ' + data);
        },
        error: function (request, error) {
            alert("Erreur lors de la synchro");
        }
    })
});

您可以与我的帖子进行比较,JSON是不同的。现在我的web api控制器可以从列表中获取值。