2016-04-08 10 views
1

私のASP.net MVCアプリケーションでは、私は剣道UIグリッドにMultiSelectのリストを持っています。私は何をしようとしていると、複数選択リストでの選択に基づいてグリッドをフィルタリングすることですが、私の見解は次のエラーでクラッシュしている:ここでMultiSelectのKendoUIグリッドリストがクラッシュして「... 500(内部サーバーエラー)のステータス」となっているのはなぜですか?

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

は私のコードです:

@(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); 
    } 
+0

チェックインしましたか?呼び出しが行われたときに何が起きていて、返された結果は何ですか? – TheUknown

答えて

1

を行います。私はMultiSelectListを使用しているので、剣道UIは文字列配列を送りますが、私のコントローラでは文字列[]の代わりに文字列パラメータがあります。タイプを変更すると私の問題が解決しました。

1

続きのパラメータの順序を切り替えて試してみてくださいローラーに:

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

編集: 我々はまた、私のコントローラは、クライアントからのヌルを得ていたので、私は500(内部サーバーエラー)を取得したこの

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

お返事ありがとうございます。私は同じ結果で両方を試しました。 – SJaka

+0

ToDataSourceResult拡張はどうですか?私の編集を参照してください。 – VRPF

+0

Nope。同じ結果。エラーはPOST要求です。私はjavascriptメソッドのバインディング "onChange"と "additionalData"についてはわかりません。 – SJaka

関連する問題