我想知道如何通过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
传递日期时间类型?
答案 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的更多信息。