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

Gur*_*Rao 6 javascript c# datetime form-data asp.net-mvc-4

我想知道如何通过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));
Run Code Online (Sandbox Code Playgroud)

$.ajax我正在设定data:formdata

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

DateTime frmDate = Convert.ToDateTime(Request.Form["start"]).Date;
DateTime toDate = Convert.ToDateTime(Request.Form["end"]).Date;
Run Code Online (Sandbox Code Playgroud)

但是我在这里System.FormatException尝试了一段时间Convert并且当我保持监视时,Request.Form["start"]那么值将是,"Fri Mar 30 2015 05:30:00 GMT+0530 (Indian Standard Time)"但是当从请求中检索时它将其视为字符串.

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

Jas*_*sen 12

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

var datestr = (new Date(fromDate)).toUTCString();
formdata.append("start", datestr);
Run Code Online (Sandbox Code Playgroud)

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

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

DateTime fromDate = Convert.ToDateTime(Request.Form["start"]).Date;
Run Code Online (Sandbox Code Playgroud)

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

是否可以通过Request传递datetime类型?

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

只需坚持标准格式的字符串.

更多关于解析日期格式的信息.