如何将datetime值附加到formdata并在控制器中接收它

时间:2015-03-26 19:34:25

标签: javascript c# asp.net-mvc-4 datetime form-data

我想知道如何通过formdata传递datetime值 在控制器中检索它并将其转换为控制器中的DateTime

我尝试过如下:

var formdata=new FormData();
fromDate = $('.from_date').datepicker('getUTCDate');
toDate = $('.to_date').datepicker('getUTCDate');

formdata.append("start", new Date(fromDate));
formdata.append("end", new Date(toDate));

并在$.ajax我正在设置data:formdata

在我的控制器中,我收到如下:

DateTime frmDate = Convert.ToDateTime(Request.Form["start"]).Date;
DateTime toDate = Convert.ToDateTime(Request.Form["end"]).Date;

但是我在尝试System.FormatException到达日期时获得了Convert,当我密切注意Request.Form["start"]时,该值将为"Fri Mar 30 2015 05:30:00 GMT+0530 (Indian Standard Time)",但它认为是从请求中检索时的字符串。

是否可以通过Request传递日期时间类型?

1 个答案:

答案 0 :(得分:10)

您将获得FormatException,因为日期字符串未在.NET日期解析器的已识别模式中格式化。如果我们可以更加具体地说明javascript中的格式,我们就可以满足.NET解析器。

var datestr = (new Date(fromDate)).toUTCString();
formdata.append("start", datestr);

其中任何一个都会给我们一个可接受的格式

现在我们在服务器端代码中解析字符串

DateTime fromDate = Convert.ToDateTime(Request.Form["start"]).Date;

根据您机器的文化设置,您可能需要使用DateTime.ParseExact()代替Convert.ToDateTime()

是否可以通过请求传递日期时间类型?

沿着从javascript到你的控制器动作的管道,无论如何都将转换为字符串或整数。我们可以返回DateTime的tick(milisecond)表示,但是你需要将它转换为.NET ticks,它使用不同的纪元和纳秒单位。

坚持使用标准格式的字符串。

有关解析日期格式here的更多信息。