如何使用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 传递数据