您好我尝试将自定义对象列表作为参数传递给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运行时错误:对象不支持属性 或方法&#39;每个&#39;
有人可以建议如何解决它吗?
答案 0 :(得分:2)
问题1:如果你只是在编写一个List&lt;&gt;通过最简单的方法,它将变成一个字符串.Net知道,这是.ToString(),导致&#34; System.Collections.Generic.List`1 [someclass]&#34;。您需要将其转换为Javascript理解的内容,让我们将其序列化为JSON。您可以轻松检查浏览器中的值,看看您是否越来越接近有效的内容。
问题2:您使用单引号(updatePriceList(&#39; ...&#39;))围绕该值,因此它仍将被解释为字符串;删除单引号。
答案 1 :(得分:2)
在发送之前将列表序列化为JSON(几乎相同的问题) Converting list of objects to json array