如何解决Asp.net Core 3.1-通过AJAX调用使用List <object>上传文件并将其发送到Controller
public Class MainModel
{
public IFormFile PDF { get; set; }
public List<TempModel> List1{ get; set; }
public List<TempModel1> List2 { get; set; }
}
public class TempModel
{
public string Prop1{ get; set; }
public string Prop2{ get; set; }
}
public class TempModel1
{
public string Prop1{ get; set; }
public string Prop2{ get; set; }
public List<TempModel> list1 { get; set; }
}
function AJAXCall()
{
var list1 = [{Prop1: "abcd",Prop2: "abcd1"},{Prop1: "abcd123",Prop2: "abcd456"}]
var list2 = [{Prop1: "abcd",Prop2: "abcd1",list1:list1 },Prop2: "abcd456",list1:list1}]
formData.append("PDF",files[i]);
formData.append("List1",list1);
formData.append("List2",list2);
$.ajax({
type: "POST",url: url,data: formData,processData: false,contentType: false,success: function (data) {
}
});
}
public IActionResult Save([FromBody] MainModel model,IFormFile PDF)
{
}
我几乎尝试了所有事情。您能否帮助将这些详细信息发送到服务器端? 在Controller中,我没有从AJAX Call中获得任何值。 URL是正确的,它击中了Controller Action Method,但是值返回了null。
当我尝试了很多事情但没有奏效时,完成此任务的正确方法是什么?
解决方法
这是一个演示:
查看:
<input type="file" id="images" multiple />
<button onclick="AJAXCall()">ajax</button>
@section scripts{
<script>
function AJAXCall() {
var formData = new FormData();
var files = $("#images").get(0).files;
formData.append('PDF',files[0]);
var list1 = [{ Prop1: "abcd",Prop2: "abcd1" },{ Prop1: "abcd123",Prop2: "abcd456" }]
var list2 = [{ Prop1: "abcd",Prop2: "abcd1",list1: list1 },Prop2: "abcd456",list1: list1 }]
for (var i = 0; i < list1.length; i++) {
formData.append("List1[" + i + "].Prop1",list1[i].Prop1);
formData.append("List1[" + i + "].Prop2",list1[i].Prop2);
}
for (var i = 0; i < list2.length; i++) {
formData.append("List2[" + i + "].Prop1",list2[i].Prop1);
formData.append("List2[" + i + "].Prop2",list2[i].Prop2);
for (var j = 0; j < list1.length; j++) {
formData.append("List2[" + i + "].list1[" + j + "].Prop1",list1[j].Prop1);
formData.append("List2[" + i + "].list1[" + j + "].Prop2",list1[j].Prop2);
}
}
$.ajax({
type: "POST",url: "Save",data: formData,processData: false,contentType: false,success: function (data) {
}
});
}
</script>
}
控制器:
public IActionResult Save(MainModel model)
{
return Ok();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。