在我的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是否有效且确实如此。有人看到了什么可能是错的吗?提前谢谢!
答案 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控制器可以从列表中获取值。