如何使用 ajax 和表单数据将验证码提交给控制器

How submit captcha to the controller using ajax and form data

我有一个带有一些字段和文件上传的 form,使用 asp.net MVC 中的 ajax 呈现为 partial view。提交表单时,我想将所有数据传递给控制器​​。但是如果我使用 $("form").serialize(),它不会将选定的文件传递给控制器​​。所以我使用 formData() 将数据传递给控制器​​。至此,一切正常。

但是在使用 CaptchaMvc 添加 captcha 之后,它没有到达控制器。即使我输入有效captcha,它在控制器中也是无效的。

这就是我使用 ajaxformData

向控制器发送数据的方式
       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();
});