【问题标题】:How to pass array of json object to controller?如何将json对象数组传递给控制器​​?
【发布时间】:2021-03-01 17:32:07
【问题描述】:

我尝试了很多方法来做到这一点,但每次 ajax 都将 null 发送到控制器。我有 json 对象数组,如下所示。我想将此数组发送到我的控制器,但每次控制器参数为空。我做错了什么?

   {
   "barkodliste":[
      {
         "ToplamSonuc":0,
         "KitapKey":12,
         "DemirbasNo":112,
         "Isbn":"fghfgh",
         "KutuphaneSiraNo":"fghfghh/fghfg",
         "KitapAdi":"0000000000112 - Fghfg",
         "Adet":0,
         "Durum":1
      },
      {
         "ToplamSonuc":0,
         "KitapKey":15,
         "DemirbasNo":115,
         "Isbn":"sdlfkjsd",
         "KutuphaneSiraNo":"fsdkljflskdj/dsfkl",
         "KitapAdi":"0000000000115 - Sdlfkjsd",
         "Adet":0,
         "Durum":1
      }
   ]
}

KitapAramaSonucModel.cs

  public class KitapAramaSonucModel
    {
        public int ToplamSonuc { get; set; }
        public int KitapKey { get; set; }
        public int DemirbasNo { get; set; }
        public string Isbn { get; set; }
        public string KutuphaneSiraNo { get; set; }
        public string KitapAdi { get; set; }
        public string Yazar { get; set; }
        public int Adet{ get; set; }
        public int Durum { get; set; }
        public string Barkod { get; set; }
    }

控制器

[HttpPost]
public async Task<JsonResult> BarkodBasilacakKitaplariGetir(List<KitapAramaSonucModel> barkodlar)
{
   //Do something with barkodlar    

}

cshtml

var barkodliste = $("#books").data("kendoMultiSelect").dataItems();
            
        $.ajax({
            cache: false,
            url: "/Kutuphane/BarkodBasilacakKitaplariGetir",
            type: 'POST',
            contentType: "application/json charset=utf-8",
            traditional: true,
            data: JSON.stringify({ barkodlar: barkodliste }),
            success: function (data) {
                alert("success");
            }
        });
  

【问题讨论】:

  • 您需要创建一个具有List&lt;KitapAramaSonucModel&gt; barkodliste { get; set;} 属性的类,并将该类用作动作方法中的模型。

标签: c# .net ajax model-view-controller


【解决方案1】:

在ajax请求中,尝试:data: JSON.stringify(barkodliste)

【讨论】:

    【解决方案2】:
    1. 尝试使用 Fiddler 或 Postman 调用
    2. 尝试查看调用是如何发生的(Fiddler 或浏览器),也许你没有发送数组
    3. 尝试添加 [FromBody] BarkodBasilacakKitaplariGetir([FromBody] 列表

    您的控制器正在等待:

    [
      {
         "ToplamSonuc":0,
         "KitapKey":12,
         "DemirbasNo":112,
         "Isbn":"fghfgh",
         "KutuphaneSiraNo":"fghfghh/fghfg",
         "KitapAdi":"0000000000112 - Fghfg",
         "Adet":0,
         "Durum":1
      },
      {
         "ToplamSonuc":0,
         "KitapKey":15,
         "DemirbasNo":115,
         "Isbn":"sdlfkjsd",
         "KutuphaneSiraNo":"fsdkljflskdj/dsfkl",
         "KitapAdi":"0000000000115 - Sdlfkjsd",
         "Adet":0,
         "Durum":1
      }
    
    
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-04
      • 2017-01-11
      • 1970-01-01
      • 2011-09-05
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      相关资源
      最近更新 更多