【问题标题】:Sending an empty array from ajax gave a null parameter in ASP.NET MVC action从 ajax 发送一个空数组在 ASP.NET MVC 操作中给出了一个空参数
【发布时间】:2015-11-13 09:16:28
【问题描述】:

我有一个简单的 ajax 调用,例如:

$.ajax({
   url: ... ,
   data: { anArray: [] },
   ...
});

和控制器的动作:

public ActionResult Test(int[] anArray) {
   ...
}

似乎anArray 是 null 而不是空数组。

我也试过了

  • List<int>
  • string[]
  • object[]

但对于以上所有,我看到 anArray 参数为空。

我读过类似的问题,但是有关于模型参数的,我没有,这里,模型。

如何在控制器的动作中接收一个空数组?我该怎么办?

【问题讨论】:

  • 您是否将 dataType 添加到您的 ajax 调用中?您的数据未到达操作方法
  • 我想看看是否设置了正确的内容类型,例如contentType:"application/json"
  • 即使我把那个内容类型,同样的事情:null
  • 是post还是get?我发现 C# 的 MVC 我通常需要输入 dataType: 'json' 以及 @Jai 的建议。此外,您应该能够简单地执行data: []
  • 这是设计使然。只需检查 null。

标签: c# jquery asp.net-mvc


【解决方案1】:

似乎 MVC 将空数组映射为 null;这是出于某种原因设计的。我想你无论如何都不能用零项数组做很多事情。

似乎最好的办法是自己实例化数组,如果它确实以 null 的形式出现:

        public ActionResult Test(int[] anArray)
        {
            anArray = anArray ?? new int[0];

            //...
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多