我有以下代码:
$.ajax({ type: "POST", url: "/api/slide", cache: false, contentType: "application/json; charset=utf-8", data: '{"Title":"fghfdhgfdgfd"}', dataType: "json",
这是我的控制者:
public class SlideController : ApiController { // POST /api/Slide public void Post(string Title) { }
当我运行代码并调用/ api / Slide时,[Title]没有数据,并且为null。
如何将JSON发布到API控制器?
POST http://127.0.0.2:81/api/slide HTTP/1.1 Host: 127.0.0.2:81 Connection: keep-alive Content-Length: 18 Origin: http://127.0.0.2:81 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 Content-Type: application/json; charset=UTF-8 Accept: application/json, text/javascript, */*; q=0.01 Referer: http://127.0.0.2:81/ Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Title=fghfdhgfdgfd
定义视图模型:
public class SlideViewModel { public string Title { get; set; } }
然后让您的控制器操作将此视图模型作为参数:
public class SlideController : ApiController { // POST /api/Slide public void Post(SlideViewModel model) { ... } }
最后调用该动作:
$.ajax({ type: 'POST', url: '/api/slide', cache: false, contentType: 'application/json; charset=utf-8', data: JSON.stringify({ title: "fghfdhgfdgfd" }), success: function() { ... } });
原因是从URI绑定了诸如字符串之类的简单类型。我还邀请您阅读以下有关Web API中的模型绑定的文章。