如何使用asp.net核心在action方法中接收通过ajax请求发送的文件和整数

Posted

技术标签:

【中文标题】如何使用asp.net核心在action方法中接收通过ajax请求发送的文件和整数【英文标题】:How to receive a file and an integer sent through an ajax request in action method using asp.net core 【发布时间】:2018-03-27 01:37:38 【问题描述】:

我想在用户上传时发送一张图片和一个号码。

我的 javascript

  form.append('file', $(uploader).get(0).files[0]);
        var id= $("#id").val();

        form.append("id", id);

        $.ajax(

            method: 'POST',
            url: '/images/send',
            data: form,
            form: false,
            processData: false


        );

在我的行动中我应该怎么做?

这样我只收到图像。

      [HttpPost]
      public string send(IFormFile file) // What argument should I use
       
              How do I get the number and file?
       

【问题讨论】:

您好,看看如何liftcodeplay.com/2017/02/14/… 【参考方案1】:

您可以将int 类型的新参数添加到您的操作方法中。参数名称应与您发送的表单数据项名称匹配 (id)

[HttpPost]
public string send(IFormFile file,int id) 

    // to do : return something.

您需要将 $.ajax 方法上的 contentType 属性设置为 false

这应该可行。

var form = new FormData();

form.append('file', $('#File').get(0).files[0]);
var id= $("#id").val();        
form.append("id", id);

var urlToPost ="/images/send";

$.ajax(
        method: 'POST',
        url: urlToPost ,
        data: form,
        processData: false,
        contentType: false
      ).done(function(result) 
         // do something with the result now
         console.log(result);
      ).fail(function(a, b, c) 
           alert("error");
      );

如果您想通过文件输入发送多个输入值,我建议您创建一个视图模型并按照this post 中的说明使用它。

另外,将表单元素保留在表单中并将其操作值设置为您要发送的 url 并在您的 javascript 代码中对其进行硬编码可能是一个好主意。

<form asp-action="send" asp-controller="images" method="post">
    <input type="file" name="File" id="File" />
    <input type="text" id="id" value="0" />
    <input type="submit" />
</form>

现在在您的 javascript 中,您可以从表单中读取它。例如,如果您正在连接表单的提交事件

$(function () 
   $("form").submit(function (e) 
      e.preventDefault();

      var urlToPost  = $(this).attr("action");

      //your existing code for ajax call
   );
);

【讨论】:

以上是关于如何使用asp.net核心在action方法中接收通过ajax请求发送的文件和整数的主要内容,如果未能解决你的问题,请参考以下文章

如何从axios.post发送简单的值到asp.net核心?

如何在 asp.net MVC 中使用 RedirectToAction 将模型从一个 Action 方法传递到另一个?尽管我发送了一个填充模型,但我得到的是空模型

如何在 ASP.Net 核心代码优先方法中上传图像并使用 post man 发送图像

ASP.NET Core 3.1 Web Api HttpPost Action 参数无法接收 axios application/json HttpPost 传递数据

CORS 错误,无法从 asp.net 核心后端接收数据

如何使用 Url.Action 在 asp.net core 2.0 razor 页面中传递多个操作