使用Dojo在MVC5中发送AntiForeignKey来执行控制器操作

时间:2014-07-21 10:55:23

标签: asp.net-mvc asp.net-mvc-4 dojo

如何在ASP.NET MVC4中执行发送反外键的控制器操作?

我的请求形成如下代码段:

var _antiForeignKey = dojoQuery('input[name="__RequestVerificationToken"]', dojo.byId('#__AjaxAntiForgeryForm'))[0].value;

xhr.post({
   url: 'Account/LogOff',
   handleAs: 'json',
   contentType: 'application/json',
   postData: '__RequestVerificationToken=' + _antiForeignKey 
});

我收到服务器的错误,其中包含

的html
  

所需的防伪表单字段“__RequestVerificationToken”是   不存在。

消息作为回复。显然,控制器中的动作不会被执行。

我看过这篇文章:jQuery Ajax calls and the Html.AntiForgeryToken(),它回答了我的问题但是使用了jQuery。

1 个答案:

答案 0 :(得分:0)

我必须使用之前的代码段执行控制器操作,但修改两个参数'handleAs''contentType'的值:

var _antiForeignKey = dojoQuery('input[name="__RequestVerificationToken"]', dojo.byId('#__AjaxAntiForgeryForm'))[0].value;

xhr.post({
   url: 'Account/LogOff',
   handleAs: 'text',
   contentType: 'application/x-www-form-urlencoded',
   postData: '__RequestVerificationToken=' + _antiForeignKey        
});

正如您所看到的,我已经更改了'handleAs'属性,因为我们没有在响应中处理json数据,而'contentType'指定我们正在发送其他类型的数据作为请求的参数。