更新时间:2023-02-25 19:36:20
问题是周四12月9日十三时三十分00秒UTC + 0530 2010
无法解析进入C#中的有效DateTime对象。您可以尝试通过简单地调用 DateTime.Parse(星期四12月9日13点30分00秒UTC + 0530 2010)
将失败。
我会建议,而不是从服务器返回的日期格式可以更好的回报 ISO 8601 一>格式,看起来像 2010-12-09T08:00:00.000Z
您可以轻松地转换为长日期时间格式为ISO 8601的javascript,
新的日期(星期四12月9日13点30分零零秒UTC + 0530 2010)的toJSON()。
如果您使用的是 JSON.NET 库可以方便地控制方式其中,日期时间都被序列化。
更新:
<脚本类型=文/ JavaScript的> VAR学生= [
{名称:维杰,ID:1,出生日期:2010-12-09T08:00:00.000Z},
{名称:阿南,ID:2,DOB:2010-12-09T08:00:00.000Z}
]; $阿贾克斯({
网址:/首页/索引
键入:POST,
数据类型:JSON
数据:JSON.stringify(学生)
的contentType:应用/ JSON的;字符集= UTF-8,
成功:函数(结果){},
故障:功能(R,E,S){警报(E); }
});< / SCRIPT>[HttpPost]
公众的ActionResult指数(学生[]学生)
{
...
}
Am trying to pass below data form my view to controller.
Edited
<script type="text/javascript"> var pathname = 'http://' + window.location.host; var Student = [ { Name: "Vijay", ID: 1, DOB: "2010-12-09T08:00:00.000Z" }, { Name: "Anand", ID: 2, DOB: "2010-12-09T08:00:00.000Z" } ]; $.ajax({ url: pathname + "/Home/UpadetStu", type: "POST", dataType: "json", data: JSON.stringify(Student), contentType: "application/json; charset=utf-8", success: function (result) { }, failure: function (r, e, s) { alert(e); } }); </script> [ObjectFilter(Param = "stuData", RootType = typeof(Stu[]))] public JsonResult UpadetStu(Stu[] stuData) { return this.Json(new { success = true }); } [DataContract] public class Stu { [DataMember] public string Name { get; set; } [DataMember] public int ID { get; set; } [DataMember] public DateTime? DOB { get; set; } }
But in the controller am getting null for Name and ID , default datetime for DOB, I found that there is problem in passing datetime. Is there any better way to pass datetime from view to controller? do i miss any parsing?
The problem is Thu Dec 9 13:30:00 UTC+0530 2010
can't be parsed into a valid datetime object in c#. You can try that by simply calling DateTime.Parse("Thu Dec 9 13:30:00 UTC+0530 2010")
it will fail.
I would suggest that instead of returning that date format from the server you can better return the ISO 8601 format that looks like 2010-12-09T08:00:00.000Z
.
You can easily convert the long datetime format into ISO 8601 from javascript by,
new Date("Thu Dec 9 13:30:00 UTC+0530 2010").toJSON();
If you are using JSON.NET library you can easily control the way in which the datetimes have to be serialized.
UPDATE:
<script type="text/javascript">
var Student = [
{ Name: "Vijay", ID: 1, DOB: "2010-12-09T08:00:00.000Z" },
{ Name: "Anand", ID: 2, DOB: "2010-12-09T08:00:00.000Z" }
];
$.ajax({
url: "/Home/Index",
type: "POST",
dataType: "json",
data: JSON.stringify(Student),
contentType: "application/json; charset=utf-8",
success: function (result) { },
failure: function (r, e, s) { alert(e); }
});
</script>
[HttpPost]
public ActionResult Index(Student[] students)
{
...
}