0

Я озадачен, почему мой контроллер не ПОЛУЧАТЬ параметр STARTDATE .. из Jquery DatePickerJquery дата Аякса проводки

Мои мысли у него есть что-то делать с форматом.

В этом случае я не могу заставить его использовать модель для публикации формы.

Параметр входит в действие как null.

$.ajax({ 
     url: '@Url.Action("myAction")', 
     type: 'GET', 
     cache: false, 
     data: { startDate: $('#startDate').val(), endDate: $('#endDate').val() }, 
     success: function (result) { 
      $('#updateDiv').html(result); 
     } 
    }); 

Контроллер

public ActionResult myAction(DateTime? startDate, DateTime? endDate) 

Ive также пытался;

startDate: $.datepicker.formatDate('dd/mm/yy', new Date()) 
+0

и если я ставлю 'предупреждение ($ («# ENDDATE») .val()); 'Он показывает сегодняшнюю дату, как ожидалось, в формате' dd/mm/yy' – Doomsknight

+1

Это проблема форматирования, очень сложно передать DateTime на сервер напрямую, лучше всего получить строку, а затем разобрать на Дата и время. – CarlosB

+0

Попробуйте отслеживать свой запрос ajax в инструменте разработчика браузера. Посмотрите, действительно ли дата отправляется клиенту в Data. – vendettamit

ответ

4

Да, это будет проблема формата - я забываю точные причины.

Я бы предложил изменить параметры действия контроллера на string, вместо этого вы можете вручную разобрать их в правильном формате, так я всегда это делаю и никогда не испытываю никаких проблем с момента перехода к этому методу.

Что-то вроде этого:

public ActionResult myAction(string startDate, string endDate) 
{ 
    DateTime? startDT = null; 
    if(!string.IsNullOrWhitespace(startDate)) 
    { 
     startDT = DateTime.ParseExact(startDate, "dd/MM/yyyy", null); 
    } 
} 

может быть лучше использовать TryParseExact вместо этого, зависит от того, как вы хотите обрабатывать плохие данные действительно

+0

Вы только что изменили мм на ММ: ^) Это похоже на работу .. :)! По крайней мере, полдня работа оказалась полезной. Как ни странно, мне не нужно менять форму, основанную на модели, используя одно и то же действие во время публикации данных. Кажется, он распознает его как строку и правильно разбирает. Спасибо – Doomsknight

+0

@Doomsknight: Я положил «ММ» с самого начала. синтаксис форматов даты .Net и форматов данных java-скриптов отличается, поэтому вы не можете использовать их. Я бы предложил бросить оба в классе конфигурации (или в web.config) и ссылаться на них в коде. Просто вы должны быстро изменить форматы – musefan

+0

Лучшее использование tryParseExact имеет полученные данные, может быть недействительным :), а «мм» в этой нотации используется в течение нескольких минут, а не месяцев (просто для уточнения). – CarlosB