【问题标题】:ajax doesn't pass array of objects to actionajax 不会将对象数组传递给操作
【发布时间】:2021-04-19 10:04:54
【问题描述】:

我正在使用 ajax 将 Json 数据传递给 asp.net 核心项目中的操作。 我有一个要传递的对象数组

  var AgentScores = [];
.
.
.
AgentScores.push({
  AgentId: AgentId,
  Fullname: Fullname,
  Score : Score
            });
  $.ajax({
                        type: "POST",
                        url: "/Score/SelfReportedScores",
                        contentType: 'application/json; charset=utf-8',
                      
                        //large data must be passed using json
                        data: JSON.stringify(AgentScores),
                    
                        success: function (result) {
                     
                        },
                        error: function (e) {
                        }
                    });

我有一个名为 AgentsListScoreClass.cs 的类,下面是我尝试在操作中获取数组的方式:

 public void SelfReportedScores([FromBody] List<AgentsListScoreClass> AgentScores)
        {

AgentScores 始终为空。 当我传递一个字符串列表时没问题,但使用AgentsListScoreClass 它始终为空。

public class AgentsListScoreClass
{
    public string AgentId { get; set; }
    public string Fullname { get; set; }
    public short Score { get; set; }
}

【问题讨论】:

    标签: json ajax asp.net-core asp.net-ajax frombodyattribute


    【解决方案1】:

    AgentScores 始终为空。

    请在浏览器开发者工具“网络”选项卡中使用发布的数据捕获实际请求,并检查您发布的数据是否如下所示。

    并且您的AgentsListScoreClass 模型的属性AgentId 定义为string 类型,请确保将值用引号括起来,例如"AgentId":"1"

    更新:

    AgentScores.push({AgentId: AgentId, Fullname: Fullname, Score : Score});

    这就是数据的样子 'data = "[{"AgentId":"015d6fce-2b6e-4702-b4ac-8af31bba8ffa","Fullname":"name","Score":"0"},{" AgentId":" ......'

    您可以尝试使用parseFloat() 函数来解析Score 数据,如下所示。

    AgentScores.push({
        AgentId: AgentId,
        Fullname: Fullname,
        Score: parseFloat(Score)
    });
    

    【讨论】:

    • 这就是数据的样子 'data = "[{\"AgentId\":\"015d6fce-2b6e-4702-b4ac-8af31bba8ffa\",\"Fullname\":\"name\ ",\"Score\":\"0\"},{\"AgentId\":\" ......'
    • \"Score\":\"0\"你可以先尝试使用parseFloat()函数解析Score数据,你可以查看我的更新。
    【解决方案2】:

    您必须通过删除 contenttype 和 stringify 来修复 ajax 错误

      var agentScores = [];
    
    agentScores.push(
    {
      AgentId: AgentId,
      Fullname: Fullname,
      Score : Score
       }
    );
    $.ajax({
      type: "POST",
       url: "/Score/SelfReportedScores",
       data: { agentScores },
        success: function (result) {
      },
    error: function (e) {
     }
     });
    

    也许您只需要 [FromBody] 作为邮递员。如果仍然有 null,请尝试将其删除。

    【讨论】:

      猜你喜欢
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      相关资源
      最近更新 更多