【发布时间】:2016-05-03 08:07:40
【问题描述】:
考虑 ASP.Net MVC5 项目中 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");
下面是请求到达的Controller的ActionMethod...
public ActionResult GetXyz(int xyzId, DateTime? date)
保持日期可以为空是必要的,因为它是一个可选的选择。
问题: .Net Framework 的文化设置中的日期格式是“DD/MM/YYYY”,当我们发送“02/10/2016”时,它接受为“2016 年 2 月 10 日”(顺便说一句,这是错误的)但是当我们发送“16 /10/2016" 它将其读取为空。只有当我们在 jqGrid 重新加载操作中传递日期时才会发生这种情况。而在正常的 ajax 调用中,一切都运行良好 例如"02/10/2016" => "2016 年 10 月 2 日", 和“16/10/2016”=>“2016 年 10 月 16 日”。
谁能帮忙?
【问题讨论】:
-
您是否尝试以 ISO 格式“2016-02-10”(2016 年 2 月 10 日)发送日期?您使用哪个版本的
Newtonsoft.Json? -
@Oleg。我在这里找到要提及的您的个人资料。感谢一百万的回复。好吧,我们在用户从日历中选择时传递值(DD/MM/YYYY),我们没有将其转换为任何其他格式。我们需要转换吗?
-
建议仅使用与语言环境无关的格式来传输数据。这是数字、日期的通用规则......您是否尝试在分配给
postData.xyzId之前将$("#date").val()转换为YYYY-MM-DD格式?我认为 ISO 日期格式是 MVC 5 中使用的 Newtonsoft.Json 的默认格式。 -
再一次,你摇滚@Oleg。这似乎奏效了。测试后我会告诉你的。谢谢。竖起大拇指!
-
@Oleg,您可以将其发布到答案中,以便我将其标记为答案。
标签: javascript c# asp.net asp.net-mvc jqgrid