我有一个控制器动作,它有一个类作为参数。
[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数据对象:验证验证令牌,但对象详细信息集属性为空。
任何机构都可以提出合法的方法吗?
谢谢!