我有一个WCF类,
[DataContract]
public class Membership
{
[DataMember]
public int ID;
public DateTime? StartDate{ get; set; }
[DataMember(EmitDefaultValue = false, Name = "StartDate")]
public string StartDateString
{
get
{
if (this.StartDate.HasValue)
return this.StartDate.Value.ToString("dd/MM/yyyy HH:mm:ss");
else
return null;
}
set
{
this.StartDate = Utils.ToNullableDateTime(this.StartDateString);
}
}
public DateTime? EndDate { get; set; }
[DataMember(EmitDefaultValue = false, Name = "EndDate")]
public string EndDateString
{
get
{
if (this.EndDate.HasValue)
return this.EndDate.Value.ToString("dd/MM/yyyy HH:mm:ss");
else
return null;
}
set
{
this.EndDate = Utils.ToNullableDateTime(this.EndDateString);
}
}
public Membership()
{
//do something
}
}
}
当我在C#中填充此对象并将其发送到JavaScript时,它会发送正确的值,但是当我在WCF方法中调用post查询时,它会给我StartDate,StartDateString,EndDate和EndDateString,
var memberships = [];
memberships.push({
ID: id,
StartDateString: $("#" + id + "governmentsddatepicker").val(),
EndDateString: $("#" + id + "governmenteddatepicker").val()
});
在调试器中我从jQuery选择器获得正确的值,它只是在WCF方法中,我得到null,
$.ajax({
url: url,
type: "POST",
data: '{ "Memberships": ' + JSON.stringify(memberships) + '}',
contentType: "application/json; charset=utf-8"
})
在WCF中,
public void UpdateMemberships(Membership[] memberships)
{
//do some work
// GETTING all dates here null
}
Rest ID和其他数据名单(我删除以简短此问题)正常工作。
除此之外的其他错误 - 我想要
我想控制我将DateTime返回给客户端的格式,但我也希望控制从客户端接收DateTime的方式并相应地填充我的日期字符串
修改
这是JS在stringy函数后发布的内容,
JSON.stringify(membership)= " [{" ID":" 53"" StartDateString":" 23/07/2015"" EndDateString":" 28/07/2015"}]"
答案 0 :(得分:0)
这可能是一个愚蠢的答案,但为什么你在数据后使用''
:?
您使用:
data: '{ "Memberships": ' + JSON.stringify(memberships) + '}',
但我认为你必须使用
data: { "Memberships": JSON.stringify(memberships)},