.Net 将对象列表作为参数传递给 JQuery

Posted

技术标签:

【中文标题】.Net 将对象列表作为参数传递给 JQuery【英文标题】:.Net pass a list of objects to JQuery as parameter 【发布时间】:2017-08-25 01:31:40 【问题描述】:

您好,我尝试将自定义对象列表作为参数传递给 JQuery,并希望 jQuery 将其识别为特定对象并循环遍历它。 类是:

public class PriceSummary
        public string ItemName  get; set; 
        public string ItemPrice  get; set;   

后端方法是:

public void updatePriceSummary(List<PriceSummary> PriceSummaryList)
        ScriptManager.RegisterStartupScript(Page, GetType(), "changePriceList",
           "updatePriceList('" + PriceSummaryList + "');", true);

JQuery 方法

function updatePriceList(PriceSummaryList) 
    PriceSummaryList.each(function () 
      $('#ControlSummaryTitle').append('<tr id = "xxx"> <td class="SummaryItem">' +
      this['ItemName'] + '</td> <td class="SummaryPrice">' + this['ItemPrice'] + 
      '</td></tr>');   )
;

但是,JQuery 函数无法将参数识别为列表,也无法循环遍历它。错误信息是:

0x800a01b6 - javascript 运行时错误:对象不支持属性 或方法“每个”

有人可以建议如何解决它吗?

【问题讨论】:

【参考方案1】:

问题 1:如果您只是将 List 组合成一个字符串,它将通过 .Net 知道的最简单方法(.ToString())变成一个字符串,从而产生“System.Collections.Generic.列表`1 [someclass]”。您需要将其转换为 Javascript 可以理解的内容,例如将其序列化为 JSON。您可以轻松地检查浏览器中的值,以查看您是否越来越接近有效的值。

问题 2:您用单引号 (updatePriceList('...')) 将值括起来,因此它仍会被解释为字符串;删除单引号。

【讨论】:

嗨,亚历克斯,感谢您的回答!您能否建议如何将其转换为例如json格式? 好吧,使用 JSON 序列化器 - .Net 中包含一些序列化器,但我一直使用第三方序列化器,但无论如何请参阅 ***.com/questions/3275863/…【参考方案2】:

在发送之前将您的列表序列化为 JSON(几乎相同的问题) Converting list of objects to json array

【讨论】:

以上是关于.Net 将对象列表作为参数传递给 JQuery的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET C# 中使用 jQuery 将多个参数传递给 Web 方法

如何将具有多个对象的状态数组作为参数传递给graphql突变?

在 ASP.NET MVC 中的下拉列表上触发 jQuery 更改事件并将参数传递给 url 操作

我应该如何将多个参数传递给 ASP.Net Web API GET?

如何将类对象作为参数传递给不同的类方法?

将列表作为参数传递给 udf 方法