2

kendoUIグリッドは、HttpGetリクエストを使用して、AJAXリクエスト中にデータを更新します。(http://www.kendoui.c​​om/documentation/asp-net-mvc/helpers/grid/ajax-binding.aspx)サーバーはJsonの結果を返します。これを機能させるには、次を使用する必要があります。次のコード:

return Json(Result, JsonRequestBehavior.AllowGet);

これで問題なく動作しますが、セキュリティの脆弱性があります(そのため、Microsoftは「AllowGet」をそこに配置します)。

Jsonを返す安全な方法はHttpPostですが、kendouiグリッドでは許可されていません。

ケンドウイグリッドを使いたいです。HttpGetを使用してJsonを返し、安全に実行する方法はありますか?

ありがとう!

4

2 に答える 2

4

Kendo GridのMVCラッパーを使用している場合、これは発生しません。このASP.NETMVCの動作により、グリッドはPOST要求を行うように構成されています。ただし、含まれていることを確認してくださいkendo.aspnetmvc.min.js。詳細については、ドキュメントをご覧ください。

于 2012-07-18T10:19:25.970 に答える
2

kendoデータソースはajaxを使用する場合、デフォルトでGETを使用しますが、投稿するトランスポート設定を定義することでPOSTを使用できます。

これは、 postを使用したTelerikkendoCRUDの例のコードの短縮バージョンです。

<script>
    $(function () {
        $("#grid").kendoGrid({
            toolbar: ["create", "save", "cancel"],
            dataSource: {
                schema: {
                    model: {
                        id: "ProductID",
                        fields: {
                            ProductID: { editable: false, nullable: true },
                            ProductName: { validation: { required: true } },
                            UnitPrice: { type: "number", validation: { required: true } }
                        }
                    }
                },
                transport: {
                    create: {
                        url: "Products.svc/Create", 
                        contentType: "application/json; charset=utf-8", 
                        type: "POST" 
                    },
                    read: {
                        url: "Products.svc/Read",
                        contentType: "application/json; charset=utf-8",
                        type: "POST"
                    },
                    parameterMap: function(data, operation) {
                        if (operation != "read") {
                            return JSON.stringify({ products: data.models })
                        }
                    }
                }
            }
        });
    });
</script>
于 2012-07-18T00:04:30.090 に答える