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

Viewed 26124

I am using a jQuery calendar to display events, which is designed to pull data from the server. On innit the calendar fires off a AJAX request to get an array of events objects (json encoded). All good so far. However, this request includes a JSON encoded date and time (at leats my implimentation does). The code looks like this:

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

The declaration for the GetPlannerEvents controller method looks like this:

public ActionResult GetPlannerEvents(DateTime start, DateTime end)

The problem is that asp.net mvc 2 cannot seem to automatically parse the json encoded datetime and as such complains that the start and end values are null.

Is there another method I should be using to pass the javascript dates to the server so that they may be parsed correctly?

Thanks,

4 Answers

The variations of date.toString did not work for me until I added json headers to the post. The resulting code is as follows:

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",
})
Related