gpt4 book ai didi

jquery - MVC 3 AJAX 和 [ValidateAntiForgeryToken]

转载 作者:行者123 更新时间:2023-12-01 06:04:58 25 4
gpt4 key购买 nike

previously asked a question regarding this ,得到了interesting answer这让我开始询问更多问题。因此,这是我弄清楚 AJAX 帖子的内部工作原理和相当烦人的 ValidateAntiForgeryTokenAttribute 过程中的下一个问题。

我有一个 _layout.cshtml,这是目前所有脚本好东西所在的位置。我有一个登录页面,它呈现三个部分,一个用于 OpenID 登录,这只是一个普通的 @using(Html.BeginForm()) {},一个用于本地登录,另一个用于基本登录登记。登录部分和注册部分都使用 ViewModels 和 Ajax.BeginForm

请注意,我正在使用 @using Ajax.BeginForm 并获取 data-ajax-update attr 以在成功时更新元素

_layout.cshtml 中的脚本:

$(document).ready(function () {
$('input[type=submit]').live("click", function (event) {
event.preventDefault();
var _allFormData = $(this).parents().find('form');
var _currentForm = $(this).closest('form');
var _updateElement = $(_currentForm).attr("data-ajax-update");

$.ajax({
type: "POST",
url: $(_currentForm).attr('action'),
data: $(_allFormData).serialize(),
success: function (data) {
$(_updateElement).html(data);
}
});

return true;
});
});

_layout.cshtml 中的表单元素

<form id="__AjaxAntiForgeryForm" action="#" method="post">
<@Html.AntiForgeryToken()>
</form>

Controller 中的操作方法:

public ActionResult RegisterMember(
RegisterMemberViewModel registerMemberViewModel)
{
// Process some stuff
return PartialView("_Register");
}

为什么这有效,神奇的是 AntiForgeryToken 被包含在我的所有帖子中。我没有捕获它并附加它,我没有用它做任何事情,它就在那里。有人可以解释一下为什么这是有效的吗?我不喜欢意外的解决方案,它们通常会在稍后崩溃。

最佳答案

@Html.AntiForgeryToken()创建 <input type='hidden' name='__RequestVerificationToken'/>或表单中类似的内容。如果我理解正确的话:var _allFormData = $(this).parents().find('form');与此结合:data: $(_allFormData).serialize()将所有表单数据发布到服务器,包括输入字段 __RequestVerificationToken MVC 可能会寻找哪个,

关于jquery - MVC 3 AJAX 和 [ValidateAntiForgeryToken],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com