微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Asp.net Core 3.1-通过AJAX调用使用List <object>上传文件并将其发送到Controller

如何解决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();
        }

结果: enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。