Phi*_*ler 4 jquery datetime json types asp.net-mvc-2
我有一系列参数通过jQuery Ajax传递给MVC JsonResult操作.在大多数情况下,这些成功到达,但有一个Date值根本没有到达.
我需要使用哪些注意事项/格式 - 或者我需要采取哪些方法 - 才能使这个日期成功到达?
...other code ...
myStory.Deadline = new Date($('#story-deadline').val());
$.ajax({
url: '/Project/' + action[2] + '/AddStory',
data: { Summary: myStory.Summary, Size: myStory.Size, Priority: myStory.Priority,
Owner: myStory.Owner, Deadline: myStory.Deadline },
dataType: 'json',
traditional: true,
type: 'POST',
...the rest of the code...
Run Code Online (Sandbox Code Playgroud)
JsonResult动作:
[HttpPost]
public JsonResult AddStory(int projectid, Story story)
{
...some code that doesn't have a DateTime object to work with...
Run Code Online (Sandbox Code Playgroud)
Microsoft使用JavaScriptSerializer序列化/期望ASP.NET MVC数据.如果使用数据类型的/Date(utcDate)/格式Date.尝试使用
'"\\/Date(' + myStory.Deadline.getTime() + ')\\/"'
Run Code Online (Sandbox Code Playgroud)
要么
var d = myStory.Deadline;
var dateForMS = '"\\/Date(' +
Date.UTC (d.getUTCFullYear(), d.getUTCMonth(),
d.getUTCDate(), d.getUTCHours(),
d.getUTCMinutes(), d.getUTCSeconds(),
d.getUTCMilliseconds()) + ')\\/"'
Run Code Online (Sandbox Code Playgroud)
您也可以使用Sys.Serialization.JavaScriptSerializerfrom MicrosoftAjax.js来序列化Deadline或任何其他Date类型.
更新:可能你应该使用'\/Date('而')\/'不是'"\\/Date('和')\\/"'.全部取决于您将插入字符串的位置.
更新2:现在我拥有它!ASP.NET MVC主要用于发布每个Ajax的Form字段.在服务器端将只使用Parse每种类型的方法将发布的参数转换为类型.因此可以使用DateTime.Parse支持的任何字符串格式.例如,您可以使用ISO 8601格式,如"2010-08-29T13:15:00.0000000Z".要在现代浏览器(firefox,chrome)中执行此操作,可以使用toISOString()函数.要更加独立,可以实现数据转换,如http://williamsportwebdeveloper.com/cgi/wp/?p=503中所述:
var d = new Date($('#story-deadline').val())
//var d = new Date(); // get the date. Here we use just Now.
var dAsISOString;
if ($.isFunction(d.toISOString)) {
//alert("internal toISOString are used!");
dAsISOString = d.toISOString();
}
else {
dAsISOString = d.getUTCFullYear() + '-' + padzero(d.getUTCMonth() + 1) + '-' +
padzero(d.getUTCDate()) + 'T' + padzero(d.getUTCHours()) + ':' +
padzero(d.getUTCMinutes()) + ':' + padzero(d.getUTCSeconds())+'.'+
pad2zeros(d.getUTCMilliseconds()) + 'Z';
}
var myStory = { Summary: 'Test description', Size: 8, Dedline: dAsISOString };
$.ajax({
url: '/Project/1/AddStory',
data: { Summary: myStory.Summary, Size: myStory.Size, Dedline: myStory.Dedline },
dataType: 'json',
// ...
});
Run Code Online (Sandbox Code Playgroud)