【问题标题】:How to POST javascript object, javascript object list and file list to asp.net core controller如何将 javascript 对象、javascript 对象列表和文件列表发布到 asp.net 核心控制器
【发布时间】:2022-01-08 00:00:06
【问题描述】:

我想在点击按钮后将所有数据传递给控制器​​。

 var data = new FormData();

这是我的 javascript 对象

var info = {};
info.CorporateName = $("input[name*='CorporateName']").val();
info.CorporatePhone1 = $("input[name*='CorporatePhone1']").val();
info.CorporatePhone2 = $("input[name*='CorporatePhone2']").val();
info.CorporateEmail = $("input[name*='CorporateEmail']").val();

我可以使用以下代码从控制器获取这些数据

$.each(info, function (key, input) {
            data.append(key, input);
        });

这是我的文件列表。我可以使用以下代码从控制器访问这些文件

var allfiles = $(".required-files");

for (var i = 0; i < allfiles.length; i++)
{
  var files = allfiles[i].files;
  data.append('files', files[0]);
}

这是我的包裹 cookie。我无法从控制器访问包裹列表

var packageList = $.parseJSON($.cookie("packageList"));
 data.append('packageList',JSON.stringify(packageList));

我可以发布文件、我的信息对象,但我无法发布 cookie 列表

这是我的控制器

[HttpPost]
public async Task<IActionResult> create(IEnumerable<IFormFile> files, List<PostServiceDto> packageList, ModelDto Model)
        {
          // files = not null, Model not null, but packageList = null

            var model = Request.Form;

            return View();
        }

我的包装模型

 public class PostServiceDto
    {
        public string Type { get; set; }
        public string Name { get; set; }
        public string Price { get; set; }
        public string Id { get; set; }
        public string Count { get; set; }
    }

【问题讨论】:

  • 当您执行JSON.stringify(objects) 时,objects 定义在哪里?
  • object 表示 packageList @charlietfl

标签: javascript jquery ajax asp.net-mvc asp.net-core


【解决方案1】:

我无法通过参数获取列表,但我解决了它获取 json 对象表单请求正文。

请求返回的值 ={\"Type\":\"3\",\"Name\":\"dfsfsdfs\",\"Price\":\"44,00\",\"Id\":\"2\",\"Count\":1},{\"Type\":\"3\",\"Name\":\"Yeni Paket\",\"Price\":\"49,90\",\"Id\":\"1\",\"Count\":1} 解决方案

foreach (var item in Request.Form.Keys)
            {
                if(item == "packageList")
                {
                    clearObject(Request.Form[item]);


                }
            }



public List<PostServiceDto> clearObject(string value)
        {
            List<PostServiceDto> postServices = new List<PostServiceDto>();
            List<PostServiceDto> myDeserializedObjList =
                (List<PostServiceDto>)Newtonsoft.Json.JsonConvert.DeserializeObject(value, typeof(List<PostServiceDto>));
            return myDeserializedObjList;

        }

代码来源:[https://www.codeproject.com/Tips/79435/Deserialize-JSON-with-C]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2019-01-29
    • 2017-09-01
    相关资源
    最近更新 更多