为什么我的带有MultiSelect列表的KendoUI网格会因“...状态为500(内部服务器错误)”而崩溃?

时间:2016-04-08 21:47:28

标签: asp.net-mvc kendo-ui telerik kendo-grid

在我的ASP.net MVC应用程序中,我有一个带有MultiSelect列表的Kendo UI Grid。我要做的是根据MultiSelect列表中的选择过滤网格,但我的视图崩溃时出现以下错误:

  

无法加载资源:服务器响应状态为500(内部服务器错误)

这是我的代码:

@(Html.Kendo().MultiSelect()
                 .Name("filter")
                 .DataValueField("SkillID")
                 .DataTextField("SkillName")
                 .Placeholder("Select Skills")
                 .Events(e => e.Change("onChange"))
                 .AutoBind(false)                                   
                 .DataSource(source =>
                    {
                      source.Read(read =>
                            {
                              read.Action("GetSkills", "Home");
                           })
                 .ServerFiltering(true);
                })
          )


@(Html.Kendo().Grid(
  (IEnumerable<BugFree.ViewModels.TechSkillViewModel>)ViewBag.TechSkills)
        .Name("grid1")
        .Columns(columns =>
            {
               columns.Bound(technician =>    
                  technician.UserID).Filterable(false);
               columns.Bound(technician => 
                   technician.FirstName).Filterable(false);
               })
          .Pageable()
          .Sortable()
          .Filterable()
          .DataSource(datasource => datasource
                  .Ajax()
                  .PageSize(20)                                  
                  .ServerOperation(false)
                  .Read(read => read.Action("GetTechnicians", "Home").Data("additionalData"))
       )
     )

<script>
function additionalData(e) {
    var value = $("#filter").data("kendoMultiSelect").value();
    alert(value);
    return { filter: value }; // send the filter value as part of the Read request
}

function onChange() {
    var grid = $("#grid1").data("kendoGrid");
    grid.dataSource.read(); // rebind the Grid's DataSource
}

这是控制器代码:

public ActionResult GetTechnicians(string filter, [DataSourceRequest] DataSourceRequest request )
    {   
        // Do the filtering here

        return Json(technicians, JsonRequestBehavior.AllowGet);
    }

1 个答案:

答案 0 :(得分:1)

尝试将控制器中的参数顺序切换为:

public ActionResult GetTechnicians([DataSourceRequest] DataSourceRequest request, string filter)

编辑: 我们也这样做

return Json(customers.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);`