将序列化的JSON数据绑定到转发器

时间:2012-10-17 13:40:38

标签: c# asp.net ajax jquery json.net

 protected void BindData()
    {
        List<Product> products = product.GetRepeaterData(prod);
        string json = JsonConvert.SerializeObject(products);
        dataRepeater.DataSource = json;
        dataRepeater.DataBind();
    }

 <asp:Repeater ID="dataRepeater" runat="server">
    <HeaderTemplate>
        List<div id="accordion">
    </HeaderTemplate>
    <ItemTemplate>
        <h3>
            <a href="#" style="background-color: gray; height: 25px; color: White; text-decoration: none;">
                <%# DataBinder.Eval(Container.DataItem, "Name")%></a></h3>
        <div>
            <ul>
                <li><span>Id:
                    <%# DataBinder.Eval(Container.DataItem, "Id")%></span></li>
                <li><span>OrganizationId:
                    <%# DataBinder.Eval(Container.DataItem, "Organization")%></span>    </li>
                <li><span>ParentProduct:
                    <%# DataBinder.Eval(Container.DataItem, "Product")%></span></li>
        </div>
    </ItemTemplate>
    <FooterTemplate>
        </div></FooterTemplate>
</asp:Repeater>

error: DataBinding: 'System.Char' does not contain a property with the name 'Name'. 
 <%# DataBinder.Eval(Container.DataItem, "Name")%></a></h3>

我是JSON和Ajax整个概念的新手。我们从Web服务中获取大量数据,因此它会减慢流程直到呼叫完成。我必须使用JSON和Ajax进行异步调用。 现在我能够在绑定之前序列化/反序列化数据现在我没有看到在将数据反序列化到转发器之后绑定数据有任何意义,所以我试图将序列化数据绑定到转发器但它没有绑定。 其次,有人可以告诉我如何做一个ajax电话吗?在客户端添加更新面板是否足以达到目的?对不起,我知道这个问题有点模糊,但我现在迷路了。任何文件或例子也会有所帮助..因为我不确定这是否是正确的做法....

1 个答案:

答案 0 :(得分:1)

JSON旨在用于客户端,并且您不会使用服务器端控件来进行绑定。

如果你想要绑定语法,那里有很多框架。淘汰赛,小胡子等。

通常,您通过ajax调用获取JSON,并使用该数据以您需要的方式将标记添加到DOM。除非您要使用更新面板或类似工具,否则请忘记服务器端控件。