Antiforgery令牌和对象参数不会相应地发布到MVC4 Controller操作

时间:2013-11-22 06:07:08

标签: ajax json asp.net-mvc-4 antiforgerytoken

我有一个控制器动作,它有一个类作为参数。

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(vm.Quotation quotationheaders)
    {...

并使用

调用它
var token = $('input[name="__RequestVerificationToken"]').val();
quotationheader.__RequestVerificationToken = token;

$.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: '/someapp/quotation/create/',
        data: quotation,
        async: true,
        success: function (response1) {
            alert(response1);
        },
        error: function (error) {
            ThrowException(error);
        }

    });

数据对象包含也具有嵌套数组详细信息的成员(qutoation标题和产品详细信息)。使用上面的代码我没有ANTIFORGERY过滤器的问题。似乎控制器动作重新调整它。但是,配额(嵌套的对象数组)的产品详细信息属性都是 null 。尽管相应地传递了标题属性,但它无法绑定到模型。

所以我做了一些修改并更改了数据并对其进行了字符串化。

data: JSON.stringify(quotation),

这次,控制器操作无法识别验证令牌。所以我试图删除AntiForgery,并看到细节是相应的约束。

总结: ajax data stringify:绑定没问题,但验证令牌无法识别。 ajax数据对象:验证验证令牌,但对象详细信息集属性为空。

任何机构都可以提出合法的方法吗?

谢谢!

0 个答案:

没有答案