У меня есть форма в HTML, которая при отправке делает вызов на сервер с помощью jQuery.ajax ();вот так ...
$.ajax({
url: '/MyArea/MyController/Search',
data: JSON.stringify($('#myForm').serializeObject()),
type: "POST",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
// Output the results to a table.
}
});
Действие MVC, которое оно вызывает, принимает параметры и отправляет обратно загрузку JSON, которая отображается в прекрасной таблице .... все это прекрасно работает.
Теперь мне нужно ввести кнопку, которая будет отправлять результаты в формате CSV.
Поэтому я использую точно такой же метод ....
[1] $ ('# myForm'). SerializeObject ()
[2] JSON.строковый результат [1]
... но я добавляю шаг использования $ .param () к результату [2] примерно так ...
window.location.replace('/MyArea/MyController/DownloadCSV?' + $.param(JSON.stringify($('#myForm').serializeObject()), true));
Все работает нормально, если только даты не включены в форму.
Глядя на скрипач, я вижу, что запрос выглядит так ...
/MyArea/MyController/DownloadCSV?referenceNo=102&startDate=01%2F04%2F2011+00%3A00&endDate=31%2F10%2F2011+23%3A59&pageNo=0&pageSize=15&sortBy=&sortDir=true
.... и я получаюошибка 500 ....
The parameters dictionary contains a null entry for parameter 'endDate' of non-nullable type 'System.DateTime' for method
Если я уберу необходимость в датах, то все будет работать нормально.
Есть идеи, как мне заставить это работать?
Я использую последнюю версию jQuery с MVC3
Большое спасибо