当我将JSON对象发布回Asp.net MVC时,我得到以下异常:
"The value '/Date(251071200000)/' is not valid for Date Of Birth."
在Firebug中,肯定有一个值被返回,所以我认为模型绑定中存在一些问题。如果我跟踪DateOfBirth属性的集合部分,则"value"为null。
设置为
具有DateOfBirth属性的C#POCO对象如下:
public DateTime? DateOfBirth
{
get
{
return ClientDto.Contact.DateOfBirth;
}
set
{
ClientDto.Contact.DateOfBirth = value;
}
}
控制器操作将JSON数据发送到调用AJAX函数,如下所示(注意:我们在这里尝试了两个选项):选项1:
/*...extract and initialize a profile object...*/
return Json(profile, JsonRequestBehavior.AllowGet);
选项2:
/*...extract and initialize a profile object...*/
return Json(new JavaScriptSerializer().Serialize(profile), JsonRequestBehavior.AllowGet);
我们从客户端发回JSON数据,如下所示:
$.ajax({
url: this.editForm.prop("action"),
data: kendo.stringify(copy), //can be replaced with JSON.stringify
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (args)
{
//done
}
});
我不太清楚这个问题,但假设你确实从MVC中得到了一个值,如果错误与JSON日期格式有关,即'/date(251071200000)/',那么我也有同样的问题。
基本上,您传递的是Date的JSON格式。您需要将日期(在客户端或服务器上)转换为正确的日期格式。
我使用下面的函数将"/Date(210355200000)/"转换为"1/9/1976"
function fromJsonToJavaScriptDate(value) {
var pattern = /Date(([^)]+))/;
var results = pattern.exec(value);
var dt = new Date(parseFloat(results[1]));
return dt.getDate() + "/" + (dt.getMonth() + 1) + "/" + dt.getFullYear();}
您可以在类客户端上使用此功能;
$dob = fromJsonToJavaScriptDate([your date value])
您可以在服务器上找到转换这种json日期格式的方法,如下链接所述。
http://www.developer.com/net/dealing-with-json-dates-in-asp.net-mvc.html
我希望这能有所帮助。