如何将日期时间值附加到表单数据并在控制器中接收它

How to append datetime value to formdata and receive it in controller

我想知道如何通过 formdata 传递日期时间值和 在控制器中检索它并在控制器中将其转换为 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;

但是这里我在尝试 Convert 到日期时间时得到 System.FormatException 并且当我监视 Request.Form["start"] 时值将是 "Fri Mar 30 2015 05:30:00 GMT+0530 (Indian Standard Time)" 但它考虑从请求中检索时它作为字符串。

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

您收到 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()

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

沿着从 javascript 到您的控制器操作的管道,无论如何这将被转换为字符串或整数。我们可以 return DateTime 的刻度(毫秒)表示,但随后您需要将其转换为使用不同纪元和纳秒单位的 .NET 刻度。

只使用标准格式的字符串。

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