JQGrid能够通过主CRUD控件传递ValidateAntiForgeryToken吗?

时间:2015-05-19 20:42:27

标签: jquery jqgrid antiforgerytoken

这是我第一次设置jqGrid,所以我实现了一个基本的网格,但是很难将__RequestVerificationToken传递给我的控制器。



$("#RawMatGrid").jqGrid({
        url: "/RawMat/GetRawMats",
        datatype: 'JSON',
        mtype: 'GET',
        colNames: [
            'Item',
            'Product',
            'Description'
        ],
        colModel: [
            { name: 'Item', key: true, index: 'Item', sortable: true, editable: true },
            { name: 'Product', key: true, index: 'Product', sortable: true, editable: true },
            { name: 'Description', key: true, index: 'Description', sortable: true, editable: true }
        ],
        pager: "#paging",
        rowNum: 10,
        rowList: [10, 20, 30, 40, 50],
        width: 780,
        height: 500,
        viewrecords: true,
        caption: 'Raw Mats',
        emptyrecords: 'No records to display',
        autowidth: true,
        multiselect: false,
        jsonReader: {
            root: "rows",
            page: "page",
            total: "total",
            records: "records",
            repeateditems: false,
            Id: "0"
            }
    }).navGrid(
        "#paging", {
            edit: true,
            add: true,
            del: false,
            search: true,
            refresh: true
        },
        { },
        { //Add
            zIndex: 100,
            url: '/RawMat/Create',
            mtype: 'POST',
            // This did not work
            editData: { __RequestVerificationToken: jQuery('input[name=__RequestVerificationToken]').val() },
            processData: "Processing...",
            width: 400,
            closeOnEscape: true,
            closeAfterEdit: true
        },
        {});




在尝试使用editData字段并且失败之后,我来问专家。

我看到有人能够通过内联中的extraparams传递令牌,但navGrid Add不允许我在文档站点上阅读的内容。有没有人有任何经验通过主网格的CRUD控件?绝对赞赏任何和所有的帮助!

1 个答案:

答案 0 :(得分:3)

key: true更多地用作一列是明确错误的。它打破了rowid。行的id值必须在HTML页面上具有唯一值。我建议您验证您使用的jsonReader是否真正与您使用的输入数据相对应。看起来很可疑。如果您包含1-2行输入数据,我可以帮助您更正jsonReader

要发送__RequestVerificationToken,您应将其定义为功能:

editData: { __RequestVerificationToken: function () {
    return $("input[name=__RequestVerificationToken]").val();
}

或者,您可以使用onclickSubmit表单编辑回调来扩展数据:只需将editData替换为

onclickSubmit: function (options, postdata, frmoper) {
    return {
        __RequestVerificationToken: $("input[name=__RequestVerificationToken]").val();
    }
}

我添加了onclickSubmit回调的未使用参数,仅显示onclickSubmit允许您分析在编辑期间将发送到服务器的数据,并根据数据生成返回的数据。< / p>