繁体   English   中英

ASP.NET MVC - 将JSON DateTime传递给控制器​​而不映射到控制器参数

[英]ASP.NET MVC - Passing JSON DateTime to controller not mapping to controller parameters

我正在使用jQuery日历来显示事件,这些事件旨在从服务器中提取数据。 在innit上,日历会触发AJAX请求以获取事件对象数组(json编码)。 到目前为止都很好。 但是,此请求包含一个JSON编码的日期和时间(在我的实施中)。 代码如下所示:

data: function (start, end, callback) {
        $.post('/planner/GetPlannerEvents', { test: "test", start: JSON.stringify(start), end: JSON.stringify(end) }, function (result) { callback(result); });
    }

GetPlannerEvents控制器方法的声明如下所示:

public ActionResult GetPlannerEvents(DateTime start, DateTime end)

问题是asp.net mvc 2似乎无法自动解析json编码的日期时间,因此抱怨start和end值为null。

我应该使用另一种方法将javascript日期传递给服务器,以便正确解析它们吗?

谢谢,

您不应该使用stringify对日期进行JSON编码,因为默认模型绑定器不期望使用JSON。 试试这个:

$.post('/planner/GetPlannerEvents', { start: start.toUTCString(), 
    end: end.toUTCString() }, function (result) {
    callback(result); 
});

尝试使用date.toISOString()将数据传递给服务器。 它以ISO8601格式返回字符串。 此方法也可用于格式化在uri中使用的日期。

$.post('/planner/GetPlannerEvents', { start: start.toISOString(), 
    end: end.toISOString() }, function (result) {
    callback(result); 
});

为什么toISOStringtoUTCString更好?
toUTCString在UTC时区转换为人类可读的字符串
toISOString转换为通用ISO格式 ,允许解决区域设置和不同格式的问题。

date.toString的变体对我来说不起作用,直到我将json标题添加到帖子中。 结果代码如下:

var pstData = {
  begDate: date1.toUTCString(),
  endDate :  date2.toUTCString()
};

$.ajax({
  url:'url',
  type:'POST',
  data: JSON.stringify( pstData ),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
})

您需要使用返回类型作为1JsonResult1s而不是1ActionResult1s

你的代码就像这样

public JasonResult(DateTime start, DateTime end) {
    //some logic
    return Json(); // you can pass any values within Json() with new keyword
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM