Javascript ASP.NET MVC-将包含数组的FormData映射到模型类

Javascript ASP.NET MVC-将包含数组的FormData映射到模型类,javascript,c#,asp.net,vue.js,form-data,Javascript,C#,Asp.net,Vue.js,Form Data,在我的前端,我正在创建一个FormData对象,其中包含一个具有以下属性的数组:“productName”和“productQuantity”。我能够将表单数据发送到我的服务器端。但是,我不能绑定任何值。如何将FormData中的对象列表正确映射到控制器上的ASP.NET MVC模型类?以下是我目前的代码: 更新我仍在努力解决此问题,非常感谢您的帮助! Update2为了清晰起见,我使用Vuejs作为客户端框架 客户端 const formData = new FormData();

在我的前端,我正在创建一个FormData对象,其中包含一个具有以下属性的数组:“productName”和“productQuantity”。我能够将表单数据发送到我的服务器端。但是,我不能绑定任何值。如何将FormData中的对象列表正确映射到控制器上的ASP.NET MVC模型类?以下是我目前的代码:

更新我仍在努力解决此问题,非常感谢您的帮助! Update2为了清晰起见,我使用Vuejs作为客户端框架

客户端

  const formData = new FormData();

  formData.append("Product[0].ProductName", "T-Shirt");
  formData.append("Product[0].Options.Quantity", "1");
  formData.append("Product[1].ProductName", "Shoe");
  formData.append("Product[1].Options.Quantity", "2");
服务器端(控制器)

[HttpPost(“验证车”)]
公共异步任务验证车([FromForm]产品[]产品)
{
}
服务器端(型号)

公共类产品
{
公共字符串ProductName{get;set;}
公共列表选项{get;set;}
}
公共类选项
{
公共整数数量{get;set;}
}

我可以通过以下方式更改表单数据使其正常工作:

formData.append("Product[0].ProductName", "T-Shirt");
formData.append("Product[0].Options.Quantity", "1");
formData.append("Product[1].ProductName", "Shoe");
formData.append("Product[1].Options.Quantity", "2");
“产品”的复数形式

因为您在post操作中使用的参数是“产品”:

我用来测试的客户端代码是:

const formData = new FormData();

    formData.append("Products[0].ProductName", "T-Shirt");
    formData.append("Products[0].Options.Quantity", "1");
    formData.append("Products[1].ProductName", "Shoe");
    formData.append("Products[1].Options.Quantity", "2");

    $.ajax({
            type: "POST",
            url: '/Home/VerifyCart',
            data: formData,
            processData: false,
            contentType: false,
            success: function (data) {
            }
     });

更新

  const formData = new FormData();

  formData.append("Product[0].ProductName", "T-Shirt");
  formData.append("Product[0].Options.Quantity", "1");
  formData.append("Product[1].ProductName", "Shoe");
  formData.append("Product[1].Options.Quantity", "2");
我更改了客户端代码以解决数量问题:

const formData = new FormData();

    formData.append("Products[0].ProductName", "T-Shirt");
    formData.append("Products[0].Options[0].Quantity", "1");
    formData.append("Products[1].ProductName", "Shoe");
    formData.append("Products[1].Options[0].Quantity", "2");

    $.ajax({
            type: "POST",
            url: '/Home/VerifyCart',
            data: formData,
            processData: false,
            contentType: false,
            success: function (data) {
            }
     });

我可以通过以下方式更改表单数据使其工作:

formData.append("Product[0].ProductName", "T-Shirt");
formData.append("Product[0].Options.Quantity", "1");
formData.append("Product[1].ProductName", "Shoe");
formData.append("Product[1].Options.Quantity", "2");
“产品”的复数形式

因为您在post操作中使用的参数是“产品”:

我用来测试的客户端代码是:

const formData = new FormData();

    formData.append("Products[0].ProductName", "T-Shirt");
    formData.append("Products[0].Options.Quantity", "1");
    formData.append("Products[1].ProductName", "Shoe");
    formData.append("Products[1].Options.Quantity", "2");

    $.ajax({
            type: "POST",
            url: '/Home/VerifyCart',
            data: formData,
            processData: false,
            contentType: false,
            success: function (data) {
            }
     });

更新

  const formData = new FormData();

  formData.append("Product[0].ProductName", "T-Shirt");
  formData.append("Product[0].Options.Quantity", "1");
  formData.append("Product[1].ProductName", "Shoe");
  formData.append("Product[1].Options.Quantity", "2");
我更改了客户端代码以解决数量问题:

const formData = new FormData();

    formData.append("Products[0].ProductName", "T-Shirt");
    formData.append("Products[0].Options[0].Quantity", "1");
    formData.append("Products[1].ProductName", "Shoe");
    formData.append("Products[1].Options[0].Quantity", "2");

    $.ajax({
            type: "POST",
            url: '/Home/VerifyCart',
            data: formData,
            processData: false,
            contentType: false,
            success: function (data) {
            }
     });

您好@tiennsloit,谢谢您的回复!我能够收到产品名称,但无法收到产品数量。为什么会这样?是因为数量位于另一个类中吗?我想我们还需要解决这个问题:formData.append(“产品[0]。选项[0]。数量”,“1”)和formData.append(“产品[1]。选项[0]。数量”,“2”)Hi@Issaki,我已经测试并更新了帖子,以解决数量问题。原因是,选项也是一种列表类型。非常感谢您的帖子。hi@tiennsloit,谢谢您的回复!我能够收到产品名称,但无法收到产品数量。为什么会这样?是因为数量位于另一个类中吗?我想我们还需要解决这个问题:formData.append(“产品[0]。选项[0]。数量”,“1”)和formData.append(“产品[1]。选项[0]。数量”,“2”)Hi@Issaki,我已经测试并更新了帖子,以解决数量问题。原因是因为选项也是一种列表类型。非常感谢这篇文章