Asp.net mvc 如何在ajax调用中调用本地MVC4函数
在我的SPA网站中,我需要通过ajax将反腐败令牌发送到服务器。我使用本文方法: 因此,在my layout.cshtml中,我有一个本地函数:Asp.net mvc 如何在ajax调用中调用本地MVC4函数,asp.net-mvc,jquery,asp.net-mvc-4,antiforgerytoken,Asp.net Mvc,Jquery,Asp.net Mvc 4,Antiforgerytoken,在我的SPA网站中,我需要通过ajax将反腐败令牌发送到服务器。我使用本文方法: 因此,在my layout.cshtml中,我有一个本地函数: <script> @functions{ public string TokenHeaderValue() { string cookieToken, formToken; AntiForgery.GetTokens(null, out cookieToken, out formTok
<script>
@functions{
public string TokenHeaderValue()
{
string cookieToken, formToken;
AntiForgery.GetTokens(null, out cookieToken, out formToken);
return cookieToken + ":" + formToken;
}
}
</script>
问题是我从未调用过@TokenHeaderValue,而且我一直收到这个错误:
The required anti-forgery form field "__RequestVerificationToken" is not present.
我如何解决这个问题 问题在于在单独的js文件中使用服务器端助手函数。如果需要在单独的js文件中调用ajax,请将@TokenHeaderValue设置为隐藏字段,并读取js文件中隐藏字段的值。以JSON格式传递数据
$.ajax({
type:"POST",
datatype:"JSON",
data:{d:d}, // Remaining code is same
});
并在控制器中的方法签名之前使用[HttpPost],因为它是一个Post请求。我通过这种方式向数据添加令牌:这解决了问题
AddAntiForgeryToken = function (data) {
data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
return data;
};
AddAntiForgeryToken = function (data) {
data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
return data;
};