Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RelaodGrid操作时jqGrid PostData中的日期时间_Javascript_C#_Asp.net_Asp.net Mvc_Jqgrid - Fatal编程技术网

Javascript RelaodGrid操作时jqGrid PostData中的日期时间

Javascript RelaodGrid操作时jqGrid PostData中的日期时间,javascript,c#,asp.net,asp.net-mvc,jqgrid,Javascript,C#,Asp.net,Asp.net Mvc,Jqgrid,考虑ASP.NETMVC5项目中JavaScript文件中的以下伪代码 var $grid = $("#grid") var postData = $grid.jqGrid("getGridParam", "postData"); postData["xyzId"] = $("#xyzId").val(); postData["date"] = $("#date").val(); $grid.setGridParam({ postData: postData }); $grid.setGridP

考虑ASP.NETMVC5项目中JavaScript文件中的以下伪代码

var $grid = $("#grid")
var postData = $grid.jqGrid("getGridParam", "postData");
postData["xyzId"] = $("#xyzId").val();
postData["date"] = $("#date").val();
$grid.setGridParam({ postData: postData });
$grid.setGridParam({ datatype: "json", page: 1 }).trigger("reloadGrid");
以下是请求到达的控制器的ActionMethod

public ActionResult GetXyz(int xyzId, DateTime? date)
保持日期为空是必要的,因为它是可选的选择

问题: .Net Framework的区域性设置中的日期格式为“DD/MM/YYYY”,当我们发送“02/10/2016”时,它接受为“2016年2月10日”(顺便说一句,这是错误的),但当我们发送“16/10/2016”时,它读取为空。只有在jqGrid重新加载操作中传递日期时,才会发生这种情况。然而,在普通的ajax调用中,所有东西都工作得很好 e、 g.“2016年10月2日”=>“2016年10月2日”, 以及“2016年10月16日”=>“2016年10月16日”


有人能帮忙吗?

将日期捕捉为字符串

public ActionResult GetXyz(int xyzId, string date="")
然后以常规方式格式化:

var Date= DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture);

希望这会有所帮助:)

建议只使用与区域设置无关的格式来传输数据。这是数字、日期等的常见规则。。。您可以将
$(“#date”).val()
转换为
YYYY-MM-DD
(日期格式),然后再分配给
postData.xyzId
?我认为ISO日期格式是MVC中使用的
Newtonsoft.Json
的默认格式


通常使用
格式化程序:“日期”
和可选的
formatoptions
以及
newformat
属性。您在内部保存并仅传输与区域设置无关的数据,但用户将看到本地特定日期(基于您在
colModel
中明确指定的
formatoptions.newformat
或从
grid.locale XX.js
继承的隐式值)。

您是否尝试以ISO格式“2016-02-10”发送日期(2016年2月10日)?您使用的是哪个版本的
Newtonsoft.Json
?@Oleg。我在这里发现了您的个人资料。非常感谢您的回复。好的,我们正在传递用户从日历(DD/MM/YYYY)中选择的值,我们不会将其转换为任何其他格式。是否需要转换?建议仅使用与区域设置无关的格式来传输数据。这是数字、日期等的常见规则。您是否尝试转换
$(“#日期”).val()
在分配到
postData.xyzId
之前,将格式改为
YYYY-MM-DD
?我认为MVC 5中使用的Newtonsoft.Json默认为ISO日期格式。再次,您可以使用@Oleg。这似乎很有效。测试后我会告诉您。谢谢。竖起大拇指!@Oleg,您可以将其发布到答案中,以便我可以将其标记为答案。谢谢但我不想接收字符串形式的日期,然后将其解析为日期。框架应该有一些内置的实现。我认为您需要解决方案。是的,谢谢您的时间。但是,我认为Oleg的解决方案对我来说更有意义。我现在正在这样做。它工作正常。postData[“date”]=Converter.dateTimeStringToUtcDateTime($(“#date”).val()).toJSON(),并且在我的转换器模块中(使用显示模块模式),var dateTimeStringToUtcDateTime=函数(值,sourceFormat){返回时刻(值,sourceFormat | Common.dateTimeFormat.shortDatePattern).utc();};