Контроллер не получает данные поста - PullRequest
1 голос
/ 23 ноября 2011

Я использую указатель даты jquery UI для отправки дат from и to контроллеру.Моя проблема в том, что контроллер не получает данные поста.

В моем представлении:

to_date.datepicker({
    dateFormat: 'yy-mm-dd',
    onSelect: function (selectedDate, inst) {
        if (from_date.datepicker("getDate") > to_date.datepicker("getDate")) {
        // error check
        } else {
            var from = from_date.val();
            var to = selectedDate;

            var data = {
                FromDate: from,
                ToDate: to
            };

            var jsonData = JSON.stringify(data);

            $.ajax({
                type: 'POST',
                url: 'View',
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                cache: false,
                data: jsonData
            });
        }
    }
});

В моем контроллере:

[HttpPost]
public JsonResult DorView(string dates)
{
    if (ModelState.IsValid)
    {

        JavaScriptSerializer js = new JavaScriptSerializer();

        // Will die on this line because dates is empty
        DatePicker JsonDate = js.Deserialize<DatePicker>(dates);

        return Json(dates);
    }

    return Json(dates);
}

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Вам не нужно вручную выполнять десериализацию JSON на вашем контроллере.Просто используйте модель представления и оставьте связыватель модели по умолчанию выполнять эту работу.

Итак, определите модель представления

public class Dates
{
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }
}

и пусть ваш контроллер примет эту модель представления в качестве аргумента:

[HttpPost]
public ActionResult DorView(Dates dates)
{
    if (ModelState.IsValid)
    {
        // do something with dates.FromDate and dates.ToDate

        return Json(dates);
    }

    return Json(dates);
}
0 голосов
/ 23 ноября 2011

Вам необходимо отправить пару ключ-значение с ключом с именем dates.

        $.ajax({
            type: 'POST',
            url: 'View',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            cache: false,
            data: "dates=" + jsonData
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...