我正在尝试将日期发布到WCF POST方法。但是发布到WCF POST方法的对象在其任何属性下都没有值(null)。
数据合同类:
[DataContract]
public class NewSession
{
[DataMember]
public int id { get; set; }
[DataMember]
public string title { get; set; }
[DataMember]
public DateTime? date { get; set; }
[DataMember]
public string speaker { get; set; }
}
WCF发布方法:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/add")]
public string AddSession(NewSession session)
{
//code to add new session
return "success";
}
所有WCF Post方法的jquery代码:
$(".lnk-add").on("click", null, function () {
var session = [{
"id": "3",
"title": "REST 3",
"date": "05/15/2014",
"speaker": "Ron Jacobs"
}];
$.ajax({
url: '/Sessions/add',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(session),
success: function (data, textStatus, jqXHR) {
}
});
});
在调试器中,我得到空值(查看截图)
这些空值的可能原因是什么?
感谢。
答案 0 :(得分:0)
我认为问题可能是您没有指出JSON数据包含NewSession对象。
试试这个:
var session = [{"NewSession":{
"id": "3",
"title": "REST 3",
"date": "05/15/2014",
"speaker": "Ron Jacobs"
}}];
答案 1 :(得分:0)
我认为问题在于您发送的是会话数组而不仅仅是会话对象。
当我重新创建您的场景并使用邮递员发送
时{"id": "3","title": "REST 3","date": "\/Date(2014-05-15)\/","speaker": "Ron Jacobs"}
我得到了正确的值但是如果我发送的话则没有:
[{"id": "3","title": "REST 3","date": "\/Date(2014-05-15)\/","speaker": "Ron Jacobs"}]