У меня есть form с некоторыми полями и загрузкой файлов, рендеринг как partial view с использованием ajax в asp.net MVC. при отправке формы я хочу передать все данные контроллеру. Но если я использую $("form").serialize(), он не передает выбранный файл контроллеру. Поэтому я использую formData() для передачи данных контроллеру. До этого момента все работает нормально.
Но после добавления captcha с помощью CaptchaMvc он не доходит до контроллера. Даже если я ввожу действительный captcha, он недействителен в контроллере.
Вот как я отправляю данные в контроллер с помощью ajax и formData
var data = new FormData();
var vidFile = null;
if ($("#FileUpload")[0].files.length > 0)
vidFile = $("#FileUpload")[0].files[0];
data.append("detail", $("#detail").val());
data.append("name", $("#name").val());
data.append("FileUpload", vidFile);
$.ajax({
url: "/home/submitData",
type: "POST",
contentType: false,
processData:false,
data: data,
success: function (response) {
if (response.success == true) {
} else {
}
}
});
Есть ли способ передать капчу контроллеру?





Почему вы не можете проверить, используя другую функцию контроллера, как показано ниже:
Во время отправки сначала проверьте капчу и, в зависимости от результата, вызовите другую функцию контроллера для отправки данных или отображения ошибки.
var submitData = function(){
var data = new FormData();
var vidFile = null;
if ($("#FileUpload")[0].files.length > 0)
vidFile = $("#FileUpload")[0].files[0];
data.append("detail", $("#detail").val());
data.append("name", $("#name").val());
data.append("FileUpload", vidFile);
$.ajax({
url: "/home/submitData",
type: "POST",
contentType: false,
processData:false,
data: data,
success: function (response) {
if (response.success == true) {
//Success
} else {
//Submission failed
}
}
});
}
var validateCaptcha = function(){
$.ajax({
url: "/home/validateCaptcha",
type: "POST",
data: $("form").serialize(),
success: function (response) {
if (response.success == true) {
submitData();
} else {
alert("Invalid Captcha entry");
}
}
});
}
$("form").submit(function(e){
validateCaptcha();
});