Angularjs 击中MVC控制器时,角度剑道网格过滤器和排序信息丢失

Angularjs 击中MVC控制器时,角度剑道网格过滤器和排序信息丢失,angularjs,asp.net-mvc,kendo-grid,Angularjs,Asp.net Mvc,Kendo Grid,我在从剑道网格获取过滤器和排序信息到MVC控制器时遇到问题。我使用服务将表单数据和数据源数据传递给MVC控制器 这是我的剑道网格数据源: dataSource: new kendo.data.DataSource({ transport: { read: function (e) { generalsearchService.submitSearch(e.data, form)

我在从剑道网格获取过滤器和排序信息到MVC控制器时遇到问题。我使用服务将表单数据和数据源数据传递给MVC控制器

这是我的剑道网格数据源:

dataSource: new kendo.data.DataSource({
          transport: {
              read: function (e) {
                  generalsearchService.submitSearch(e.data, form)
                      .then(function success(response) {
                          e.success(response.data);
                      });
              }
          },
          schema: {
              data: "Data",
              total: "Total"
          },
          pageSize: 25,
          serverPaging: true,
          serverFiltering: true,
          serverSorting: true

      }),
以下是我服务中的代码:

  this.submitSearch = function (command, form) {
return $http.post('/SSQV4/SSQV5/Search/SubmitCriteria', {'command': command, 'form': form});
})

以下是我的MVC控制器方法定义:

public async Task<ActionResult> SubmitCriteria(DataSourceRequest command, ContractorSearchViewModel form)
公共异步任务

当它点击服务时,过滤器信息就在那里:

当它击中MVC控制器时,它就消失了:

我尝试包括'type:'aspnetmvc ajax',但它抛出以下错误:

非常感谢您的帮助

必须手动将aspnetmvc服务器“注入”到传输中才能使其正常工作。以下是修复方法:

在Angularjs控制器中:

var form = $scope.form;
dataSource: new kendo.data.DataSource({
          transport: {
              read: function (e) {
                  var grid = $scope.SearchGrid;
                  var requestObject = (new kendo.data.transports["aspnetmvc-server"]({ prefix: "" }))
                      .options.parameterMap({
                          page: grid.dataSource.page(),
                          sort: grid.dataSource.sort(),
                          filter: grid.dataSource.filter(),
                          pagesize: grid.dataSource.pageSize()

              });
                  generalsearchService.submitSearch({ page: requestObject.page, sort: requestObject.sort, filter: requestObject.filter, pagesize: requestObject.pagesize, form: form })
                      .then(function success(response) {
                          e.success(response.data);
                      });
                }
            },
              schema: {
                  data: "Data",
                  total: "Total"
              },
          pageSize: 25,
          serverPaging: true,
          serverFiltering: true,
          serverSorting: true
  this.submitSearch = function (form) {
return $http.post('/SSQV4/SSQV5/Search/SubmitCriteria', form );
        public async Task<ActionResult> SubmitCriteria([DataSourceRequest] DataSourceRequest request, ContractorSearchViewModel form)
在Angularjs服务中:

var form = $scope.form;
dataSource: new kendo.data.DataSource({
          transport: {
              read: function (e) {
                  var grid = $scope.SearchGrid;
                  var requestObject = (new kendo.data.transports["aspnetmvc-server"]({ prefix: "" }))
                      .options.parameterMap({
                          page: grid.dataSource.page(),
                          sort: grid.dataSource.sort(),
                          filter: grid.dataSource.filter(),
                          pagesize: grid.dataSource.pageSize()

              });
                  generalsearchService.submitSearch({ page: requestObject.page, sort: requestObject.sort, filter: requestObject.filter, pagesize: requestObject.pagesize, form: form })
                      .then(function success(response) {
                          e.success(response.data);
                      });
                }
            },
              schema: {
                  data: "Data",
                  total: "Total"
              },
          pageSize: 25,
          serverPaging: true,
          serverFiltering: true,
          serverSorting: true
  this.submitSearch = function (form) {
return $http.post('/SSQV4/SSQV5/Search/SubmitCriteria', form );
        public async Task<ActionResult> SubmitCriteria([DataSourceRequest] DataSourceRequest request, ContractorSearchViewModel form)
})

在MVC控制器中:

var form = $scope.form;
dataSource: new kendo.data.DataSource({
          transport: {
              read: function (e) {
                  var grid = $scope.SearchGrid;
                  var requestObject = (new kendo.data.transports["aspnetmvc-server"]({ prefix: "" }))
                      .options.parameterMap({
                          page: grid.dataSource.page(),
                          sort: grid.dataSource.sort(),
                          filter: grid.dataSource.filter(),
                          pagesize: grid.dataSource.pageSize()

              });
                  generalsearchService.submitSearch({ page: requestObject.page, sort: requestObject.sort, filter: requestObject.filter, pagesize: requestObject.pagesize, form: form })
                      .then(function success(response) {
                          e.success(response.data);
                      });
                }
            },
              schema: {
                  data: "Data",
                  total: "Total"
              },
          pageSize: 25,
          serverPaging: true,
          serverFiltering: true,
          serverSorting: true
  this.submitSearch = function (form) {
return $http.post('/SSQV4/SSQV5/Search/SubmitCriteria', form );
        public async Task<ActionResult> SubmitCriteria([DataSourceRequest] DataSourceRequest request, ContractorSearchViewModel form)
公共异步任务提交标准([DataSourceRequest]DataSourceRequest请求,ContractorSearchViewModel表单)
一切正常。希望这对其他人有帮助。快乐编码