1

そこで、私は Kendo UI グリッドを試してみました。最初は、GET 経由で Web API コントローラーからデータを取得して、単純な非 MVC ヘルパー生成のクライアント側グリッドから始めました。問題なく動作しましたが、並べ替えとフィルターのパラメーターをバインドする厄介なモデルを取得し始めていました。

そこで、MVC ヘルパーの使用を開始したところ、問題が発生しました。これは次のとおりです。

MVC 以外で生成されたグリッドを使用し、GET を使用するように構成され、dataSource の「タイプ」が設定されていない場合、GET パラメータは次のようになります。

page    1
pageSize    10
skip    0
sort[0][dir]    asc
sort[0][field]  OrderID
take    10

これは、DataSourceRequest MVC ヘルパーにバインドする正しい形式です...しかし、MVC 拡張機能を使用して上記のグリッドをレンダリングすると、dataSource の「タイプ」が「aspnetmvc-ajax」に設定され、GET パラメータが次のようになります。

filter  
group   
page    1
pageSize    10
sort    OrderID-asc

(複数の並べ替えパラメーターがある場合は、"~" で結合します)。この 2 番目の形式は DataSourceRequest に適切にバインドされないため、null の「Sorts」メンバーになります。MVC 拡張機能を使用している場合は DataSourceRequest ヘルパーしかないため、これは完全に逆のように思えますが、それらを使用すると、データが正しく送信されません!

また、例に従って通常の MVC コントローラーに POST しようとしましたが、同じ問題がありました。

いずれにせよ、拡張機能に aspnetmvc-ajax をレンダリングしないように指示する方法を見つけようとしています。誰にもアイデアはありますか?前もって感謝します...

4

2 に答える 2

2

MVC 拡張機能は aspnet-ajax トランスポート設定を使用しており、バインディングを処理する DataSourceRequest 属性を使用すると、DataSourceRequest オブジェクトにバインドされます。デモのコントローラ コードを確認します。

    public ActionResult EditingCustom_Read([DataSourceRequest] DataSourceRequest request)
    {
        return Json(SessionClientProductRepository.All().ToDataSourceResult(request));
    }
于 2013-06-21T18:59:55.730 に答える
1

わかりましたので、解決策は、次のサンプル コードにある webapi 用に提供されたモデル バインダーを使用することでした。

Web API の Kendo UI Grid Params モデル バインダー

これは偶然見つけたものです....もちろん、それは私の Kendo UI との「冒険」の始まりに過ぎません....

于 2013-06-25T21:29:28.693 に答える