我在我的网页上遇到了一个问题:我有2 __RequestVerificationToken
被渲染(1表示注销表单,1表示提交表单在部分视图中呈现)。
现在一切正常,但是只要我向控制器方法添加[ValidateAntiForgeryToken]
,服务器就会抱怨没有令牌传递给控制器。
我正在使用
获取令牌$('form').submit(function (e) {
// ...some code
var token = $('input[name="__RequestVerificationToken"]', this).val();
// ...more code
});
但似乎总是得到错误形式的令牌。这是为什么?在获取值时使用this
时,是否应该定位提交的表单?
这是我完整的ajax请求:
$.ajax({
url: this.action,
type: this.method,
data: { __RequestVerificationToken: token, lead: formdata },
processData: false,
contentType: false,
beforeSend: function () {
$('form .btn').prop('disabled', true);
},
success: function (result) {
$('form .btn').prop('disabled', false);
$('form .form-control').val('');
$('#result').html('Thank you. We will contact you shortly.');
$('.validation-summary-errors ul li').css('display', 'none');
},
error: function (result) {
$('form .btn').prop('disabled', false);
alert(result.responseText);
//alert('An error occurred on the server. Please try again. \n\n If this keep happening, please email us at office@auroraglobal.ru');
}
});
我可以从设置一些alert
框中看到,选择的令牌肯定是错误的(在查看源代码后,我可以看到它是注销表单的值而不是提交表单)
我还尝试将data
设置为
data : {token, formdata}
注销表格
<form action="/ru/Account/LogOff" class="navbar-right" id="logoutForm" method="post">
<input name="__RequestVerificationToken" type="hidden"
value="FIna8PhWML3zzw2m4ZRKdB-nDx_EZ7_1iWjdb6UUHZBsPG4RxrV4YXX5j56Qmd7Gs-UrCnoRZd-IM9MCx-fhvf9fKf4BZf0pUheuaJlI1_sVgT7L-nSCv8dOecmg5XeuQaZqXFYyUagZujIa_J1vzA2" />
<ul class="nav navbar-nav navbar-right">
<li><a href="/ru/Manage" title="Manage">Здравствуйте skotze !</a></li>
<li><a href="/ru/Lead" id="leadsLink">возможности</a></li>
<li><a href="/ru/Organisation" id="leadsLink">организации</a></li>
<li><a href="/ru/Admin">админ</a></li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">выйти</a></li>
</ul>
</form>
提交表单(这是我试图用bove jquery获取的令牌)
<form action="/ru/Lead/Create" enctype="multipart/form-data" method="post"><input name="__RequestVerificationToken" type="hidden" value="XWPLVZr1NRi41XvWg5OtrHzDcVzwcACktMbK6ygtbHwjRhnWIGWmeeKGlqhOQA5gag4dFCkOujeDjfjsW6U3E-WEnnJ85QbU7RrR02ltRnJWu6V-QnLUX5fAXCpBMmyk47NpSnUvDIkphUNDI-Ocgw2" /> <div class="form-horizontal container-fluid">
<h4>Новый запрос</h4>
<div class="form-group has-feedback">
<div class="col-xs-12">
<input class="form-control text-box single-line" data-val="true" data-val-required="Необходимо заполнить местонахождение" id="Location" name="Location" placeholder="местонахождение" type="text" value="" />
<span class="glyphicon glyphicon-map-marker form-control-feedback"></span>
</div>
</div>
<div class="form-group has-feedback">
<div class="col-xs-12">
<input class="form-control text-box single-line" data-val="true" data-val-required="Необходимо заполнить организация" id="OrganisationName" name="OrganisationName" placeholder="организация" type="text" value="" />
<span class="glyphicon glyphicon-home form-control-feedback"></span>
</div>
</div>
<div class="form-group has-feedback">
<div class="col-xs-12">
<input class="form-control text-box single-line" data-val="true" data-val-required="Необходимо заполнить Контактное лицо" id="ContactName" name="ContactName" placeholder="Контактное лицо" type="text" value="" />
<span class="glyphicon glyphicon-user form-control-feedback"></span>
</div>
</div>
<div class="form-group has-feedback">
<div class="col-xs-12">
<input class="form-control text-box single-line" data-val="true" data-val-regex="Введите действительный номер телефона." data-val-regex-pattern="^(?!0+$)(\+\d{1,3}[- ]?)?(?!0+$)\d{10,15}$" data-val-required="Необходимо заполнить Телефон" id="Telephone" name="Telephone" placeholder="Телефон" type="text" value="" />
<span class="glyphicon glyphicon-phone-alt form-control-feedback"></span>
</div>
</div>
<div class="form-group has-feedback">
<div class="col-xs-12">
<input class="form-control text-box single-line" data-val="true" data-val-email="Пожалуйста, введите действительный адрес электронной почты" data-val-required="Необходимо заполнить Email" id="Email" name="Email" placeholder="Email" type="email" value="" />
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div>
</div>
<div class="form-group has-feedback">
<div class="col-xs-12">
<textarea class="form-control" cols="20" data-val="true" data-val-required="Необходимо заполнить Детали" id="Details" name="Details" placeholder="Детали" rows="2">
</textarea>
<span class="glyphicon glyphicon-option-horizontal form-control-feedback"></span>
</div>
</div>
<div class="form-group has-feedback">
<div class="col-xs-5">
<label class="btn btn-default btn-file">
Файл <input id="fileInput" type="file" style="display: none;" name="Files" multiple="multiple"
data-textbox="#fileUploadCount" data-singlemsg="1 выбранный файл"
data-multimsg="Выбрано {0} файла">
</label>
</div>
<div class="col-xs-7">
<input id="fileUploadCount" type="text" class="form-control" readonly="readonly"
placeholder="вы можете выбрать несколько файлов" onclick="$('#fileInput').trigger('click');" />
<span class="glyphicon glyphicon-file form-control-feedback"></span>
</div>
</div>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-10">
<input type="submit" value=Отправить class="btn btn-default pull-right" />
</div>
</div>
<div class="col-xs-12">
<div class="validation-summary-valid text-danger" data-valmsg-summary="true"><ul><li style="display:none"></li>
</ul></div>
<divi id="result" class="text-success"></divi>
</div>
</div>
</form>