【问题标题】:How to send formData to api controller via jquery ajax如何通过 jquery ajax 将 formData 发送到 api 控制器
【发布时间】:2023-03-03 02:50:02
【问题描述】:

我想通过 jquery ajax 将 formData 发送到 api 控制器。 这是我的代码:

$("#btnReject").click(function() {
  UploadData = new FormData();
  UploadData.append('UserName',$("#txtUserName").val());
  // HTML file input, chosen by user
  UploadData.append("userfile", fileInputElement.files[0]);
  $.ajax({
     url: 'Api/DynamicForm/Reject',
     dataType: "json",
     type: "post,
     contentType: false,
     processData: false,
     data: UploadData
  });
}

和我的控制器代码:

public class DynamicFormController : ApiController
{
    [System.Web.Http.HttpPost]
    public IHttpActionResult Reject (DynamicFormDto model)
    {
       //some code
        return Json(new isValid = true});
    }
}

在 DynamicFormDto 中:

Public class DynamicFormDto
{
   public string UserName {get; set;}
   public string Model {get; set;}
}

我在客户端遇到了这个错误: 415:不支持的媒体类型

当我删除“contentType:false”时,错误已修复,但 在行动“模型”是空的。

我该怎么办?

【问题讨论】:

  • ModelBinder 在将多部分请求绑定到复杂类型时存在问题(因为它不起作用)。请参阅我标记的副本以获取更多信息。另请注意,您可以改为编写自己的自定义模型绑定器,see this answr 了解如何实现这一目标
  • @RoryMcCrossan,您是否选择了错误的欺骗目标? (这与 OP 的问题无关 - 他们已经在使用 FormData

标签: javascript jquery ajax asp.net-mvc asp.net-web-api


【解决方案1】:
 public class DynamicFormController : ApiController
{
    [System.Web.Http.HttpPost]
    public IHttpActionResult Reject ()
    {

      var name = HttpContext.Current.Request["UserName"];
      var httpPostedFile = HttpContext.Current.Request.Files["userfile"];
    //some code

        return Json(new isValid = true});
    }
}

【讨论】:

  • 稍微解释一下就好了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多