【发布时间】:2013-09-17 04:59:03
【问题描述】:
我正在尝试将 JSON 字符串发布到接受复杂类型作为参数但所有参数属性始终为空的 WebAPI 控制器。根据下面的代码,任何想法为什么?请求正确地访问了 WebAPI 方法,并且参数不为空,但它的所有属性都是。
编辑:如果我删除对 JSON.stringify() 的调用,参数属性会正确填充,但我的请求正文现在是查询字符串而不是有效的 JSON 对象,这不会fly 因为我的实际对象还包含一些在作为查询字符串传递时不起作用的子集合。
型号
public class SavedViewData
{
public int UserID { get; set; }
public int? SavedID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
JSON 请求正文(从 Fiddler 复制)
{"UserID":"1","SavedID":null,"Name":"Test","Description":"Description"}
WebAPI 操作
[HttpPost]
public int Save(SavedViewData viewData)
{
return 1;
}
jQuery $.ajax 调用
var view = {
UserID: userID,
SavedID: null,
Name: 'Test',
Description: 'Description'
};
$.ajax({
type: "POST",
url: '/api/save',
data: JSON.stringify(view),
contenttype: "application/json; charset=utf-8",
success: function (data) {
alert('success');
}
});
【问题讨论】:
-
尝试将
UserID作为数字而不是字符串发送。 -
@Archer 你错了,内容类型是你要发送的,数据类型是你所期望的。
-
很好地抓住了 UserID,但改变它对问题没有影响。
-
URL有效,可以在action
save中使用断点吗? -
是的,URL 是有效的,我可以打断点。
标签: jquery asp.net json asp.net-web-api