【发布时间】:2014-12-31 05:23:27
【问题描述】:
在我的 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 是否有效并且它是有效的。有人看到可能出了什么问题吗?提前致谢!
【问题讨论】:
-
如果浏览器以内容类型“application/x-www-form-urlencoded”的形式发送请求,您能否检查您的请求?
-
请求的内容类型似乎是:application/json
-
好吧,尝试将其设置为“application/x-www-form-urlencoded”,因为我认为您的后端不会理解这是一个传入的 POST 请求。 jQuery 似乎应该默认将其设置为此,但尝试在
contentType中显式设置它
标签: json string list post asp.net-web-api