如何解决AntiForgeryToken应该位于循环内部还是循环外部?
我们目前有此代码
@foreach (var market in Model.Markets.Markets)
{
<li>
@using (Html.BeginForm("Set","Market",new {marketId = market.Value},FormMethod.Post,null))
{
@Html.AntiForgeryToken()
<button class="btn btn-none market-list__item jsSelectMarket">
<img src="@market.FlagUrl" class="market-selector__market-icon">
<p class="market-selector__market-text">@market.Text</p>
</button>
}
</li>
}
看起来是正确的,但分析显示生成防伪令牌花费了很多cpu时间(仅此操作每页20次)。
有没有一种方法可以将@ Html.AntiForgeryToken()移到foreach之外,因此仅称为一个?
谢谢。
解决方法
您应该使用Ajax。
您可以尝试使用以下代码来发布
function AjaxPostMethod(url,formName,parameters,successCallback) {
$.validator.unobtrusive.parse($(formName));
$(formName).validate();
if ($(formName).valid()) {
var form = $(formName);
var token = $('input[name="__RequestVerificationToken"]',form).val();
$.ajax({
type: 'POST',url: url,data:
{
__RequestVerificationToken: token,model: parameters
},success: successCallback,error: function (xhr,textStatus,errorThrown) {
console.log('error');
}
});
}
一劳永逸
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。