除非显式设置,否则Kendo网格范围变量Null将发送到控制器

时间:2017-04-29 14:52:01

标签: angularjs asp.net-mvc kendo-grid

这是我见过的最奇怪的事情。我试图将从Angular Directive收集的数据发布到Kendo Grid中的MVC Controller。 这是网格的DataSource:

dataSource: new kendo.data.DataSource({
            type: "aspnetmvc-ajax",
            transport: {
                read: {
                    url: "/SSQV4/SSQV5/Search/SubmitCriteria",
                    data: { form: $scope.form }
                }
            },
            schema: {
                data: "Data",
                total: "Total"
            },
            pageSize: 25,
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true

        }),

以下是MVC Controller方法的第一行:

        public async Task<ActionResult> SubmitCriteria([DataSourceRequest]DataSourceRequest command, ContractorSearchViewModel form)

问题,虽然$scope.form有数据,但当它到达控制器时它是null,除非我明确设置每个值。如果我设置:

$scope.form.UnitID = "558" in my Angular Controller, when it hits my MVC Controller the Value will be there.  However, if `$scope.form.UnitID` is set by user selection in the Directive, when my MVC Controller is hit, UnitID is null.

为了更好地解释这个问题,虽然价值如下:

var unitID = $scope.form.UnitID;
        $scope.form.UnitID = unitID;

是unitID =“558”,如果我明确地将它设置为这样,“558”只会进入MVC控制器:

$scope.form.UnitID = "558"

有谁知道我在这里缺少什么?当用户在多个选择列表中选择时,我无法手动设置所有值。

我知道它与$scope有关,因为如果我用“F5”“刷新”页面,所有信息都会发送到MVC控制器。我尝试使用$scope.$apply(),但我收到了“正在进行摘要”错误。

非常感谢任何帮助!!!

0 个答案:

没有答案