【问题标题】:No parameterless constructor defined for type of 'System.Collections.Generic.IList`1没有为“System.Collections.Generic.IList”1 类型定义无参数构造函数
【发布时间】:2014-02-28 02:44:24
【问题描述】:

我的课是这样的,

 public class SayfalarIletisim : IHarita
    {
        public string KordinatX{ get;  set; }

        public string KordinatY { get;set; }

        public string Adres{ get;set; }


        public string EkBilgi {get;set;}


      }

和表示层

var IletisimKaydet = function () {

    var adres=       App.txtIletisimAdres.getValue();
    var icerik=       App.txtIcerik.getValue();
    var kX=$('#lat').val();
    var kY=$('#lng').val();

    var dd = JSON.stringify({ 'Adres': adres, 'EkBilgi': icerik, 'KordinatX': kX, 'KordinatY': kY });


    $.ajax({
        type: "POST",
        url: 'WebServiceAdmin.asmx/IletisimKaydet',
        data: "{'p':'" + dd + "'}",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (d) { Ext.Msg.notify('Uyarı', 'ekleme basarılı...'); },
        error: function () { Ext.Msg.notify('Uyarı', 'eklerken hata oluşdu!!!'); }
    });

};

我像这样将数据发送到网络服务,并解析它

 [WebMethod]
          public void IletisimKaydet(string p)
          {

              var serializer= new JavaScriptSerializer ();

            var jsonObjectSayfa = serializer.Deserialize<IList<SayfalarIletisim>>(p);

              dal_syf.GuncelleIletisim(jsonObjectSayfa[0]); 


          }

我在运行这些代码时遇到此错误。

No parameterless constructor defined for type of 'System.Collections.Generic.IList`1

这段代码有什么问题,在我运行这些代码之前没有任何问题。

【问题讨论】:

    标签: asp.net json deserialization


    【解决方案1】:

    您必须在代码中使用类的反序列化,而不是接口。 像这样:

    [WebMethod]
    public void IletisimKaydet(string p)
    {
         var serializer= new JavaScriptSerializer ();
         var jsonObjectSayfa = serializer.Deserialize<List<SayfalarIletisim>>(p);
         dal_syf.GuncelleIletisim(jsonObjectSayfa[0]); 
    }
    

    具体实现List&lt;SayfalarIletisim&gt;支持接口IList&lt;SayfalarIletisim&gt;,所以你还是得到了实际的实现。

    【讨论】:

    • 在这种情况下,jsonObjectSayfa[0] 返回零
    • 创建 JSON 时,您必须确保发送数组。如果要反序列化单个实体,请使用 serializer.Deserialize(p);
    猜你喜欢
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多