#javascript #jquery #asp.net #ajax #asp.net-mvc
#javascript #jquery #asp.net #ajax #asp.net-mvc
Вопрос:
Я создаю диалоговое окно для редактирования, и мне нужно передать AntiForgeryToken с ним. Но я пробовал несколько раз и все равно не могу его передать.
$("#EditSave").click(function(e) {
e.preventDefault();
$.ajax({
url: 'PIS/Edit',
type: "POST",
dataType: 'json',
data: $('form').serialize(),
success: function (data) {
if (data.Save) {
dialog.dialog('close');
var notification = {
type: "success",
title: "Successfully",
message: "save ",
icon: 'glyphicon glyphicon-ok-sign'
};
showNotification(notification);
updatePartial();
}
if (data.AlreadyExist) {
var notification = {
type: "danger",
title: "Warning!",
message: "Already Exist",
icon: 'glyphicon glyphicon-exclamation-sign'
};
showNotification(notification);
}
if (data.Back) {
var notification = {
type: "danger",
title: "Warning!",
message: "Information was not successfully saved. Please check required fields.",
icon: 'glyphicon glyphicon-exclamation-sign'
};
showNotification(notification);
}
else {
debugger
dialog.dialog('close');
}
},
error: function (xhr, status, error) {
alert(xhr.responseText);
}
})
return false;
})
Это действие моего контроллера, и мне нужно передать токен в моем представлении, чтобы можно было предотвратить сквозные сценарии, потому что это вид редактирования в виде диалогового окна.
public async Task<PartialViewResult> Edit(string id)
{
return PartialView();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<JsonResult>Edit(PISEditViewModel viewModel)
{
return Json(new {Back = true });
}
Это сообщение об ошибке, которое я получил при передаче $(‘form’).serialize()
Не удалось расшифровать токен защиты от подделки. Если это приложение размещено на веб-ферме или кластере, убедитесь, что на всех компьютерах установлена одна и та же версия ASP.NET Веб-страниц и что конфигурация <machineKey> определяет явные ключи шифрования и проверки. Автогенерация не может использоваться в кластере.
Комментарии:
1. Не могли бы вы отформатировать свой фрагмент кода, а также включить метод представления (разметки) и действия? Не могли бы вы также указать, какую ошибку вы получаете / откуда вы знаете, что она не работает?
2.
$('form').serialize();
будет включать токен (при условии, что вы правильно отобразили его внутри формы3. Когда я передаю $(‘form’).serialize(); я получаю сообщение об ошибке «Не удалось расшифровать Antiforgerytoken»
4. Добавьте полную информацию о сообщении об ошибке в свой вопрос (не комментарии)
5. Я думаю, что на вашей странице _RequestVerificationToken используется дважды, проверьте это.