Kendo DataSource с отправкой динамических данных на сервер

Я новичок в кендо и уже несколько дней пытаюсь понять, как заполнить сетку кендо данными поиска. Мой случай следующий:

У меня есть модель просмотра javascript:

sl.kendo = function () {
    var billingReportViewModel = kendo.observable({
        billingReportCriteria: [],
        executeSearch: function (e) {
            var $grid = $("#gridResults").data("kendoGrid");
            $grid.dataSource.read();
            $grid.refresh();
        }
    });
    return {
        billingReportViewModel: billingReportViewModel
    }
} ();

И я инициализирую billingReportCriteria с сервера с помощью этой функции:

var initCriteriaViewModel = function () {
    $.ajax({
        url: 'GetBillingReportCriteria',
        type: "GET",
        dataType: "json",
        success: function (model) {                
            **$.extend(sl.kendo.billingReportViewModel.get("billingReportCriteria"), kendo.observable(model));**
            // bind to the viewModel
            kendo.bind($("#searchTable"), sl.kendo.billingReportViewModel);
        }
    });
}()

Затем я объявляю свой источник данных сетки, который отправляет этот billingReportCriteria на сервер в качестве параметра:

var gridDataSource = new kendo.data.DataSource({
    transport: {
        read: {
            url: "GetBillingReportResults",
            data: JSON.stringify(sl.kendo.billingReportViewModel.get("billingReportCriteria")),               
            cache: false,
            type: "POST"
        }
    },       
    schema: {
        data: "Items",
        total: 10 // total number of data items is returned in the "count" field of the response
    }
});

И я запускаю свою сетку кендо:

$("#gridResults").kendoGrid({
    columns: [
          {
              field: "Name"
          },
          {
              field: "Title"
          }],
    dataSource: gridDataSource,
    autoBind: false
});

Когда я выполняю поиск из модели представления «executeSearch», я захожу на сервер, но BillingReportCriteria пуст! Когда я проверяю значение «billingReportViewModel» в инструментах F12 Chrome, все кажется в порядке, но когда я проверяю значение «sl.kendo.billingReportViewModel.billingReportCriteria» или «sl.kendo.billingReportViewModel.get("billingReportCriteria")' - он пуст, хотя 'sl.kendo.billingReportViewModel.get("billingReportCriteria.Name")', например, имеет правильное значение! Можете подсказать, в чем проблема? Почему-то я не могу отправить правильный 'billingReportCriteria' на сервер!


person Lily Hr    schedule 13.08.2012    source источник


Ответы (1)


Я выясняю следующее. Когда я получаю метод на сервере, который отвечает за возврат результатов, единственным способом получить переданные параметры является использование Response.Form или Response.QueryString в теле метода. Как я могу передать аргументы этому методу, чтобы получить их следующим образом:

public JsonResult GetBillingReportResults(string billingCriteria)
{
    string criteria = Request.Form["billingCriteria"]; //I can do it like this, but I want to pass the arguments as method parameters
}
person Lily Hr    schedule 14.08.2012