首页 > 解决方案 > 如何使用 ajax 和表单数据将验证码提交给控制器

问题描述

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

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

这就是我使用ajaxand向控制器发送数据的方式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 {

                }
            }
        });

有没有办法将验证码也传递给控制器​​?

标签: ajaxasp.net-mvcpartial-viewscaptcha

解决方案


为什么不能使用不同的控制器功能进行验证,如下:

提交时,先验证验证码,根据结果调用另一个控制器函数提交数据或显示错误。

 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();
});

推荐阅读