如何将整个对象传入转发器中的函数?

时间:2012-11-07 15:28:28

标签: c# asp.net repeater

在我的代码隐藏中,我有:

List<Products> products = 
rptr.Datasource = products;


protected string GetVariants(Product product)
{
  //
}

在我的中继器中,我有:

<itemTemplate>

<li>  <%# Eval("Name") %>
<li>  <%# GetVariants(?????????????) %>

</itemTemplate>

如何将产品对象传递给GetVariants方法?

2 个答案:

答案 0 :(得分:6)

(Product)Container.DataItem应该做的伎俩

答案 1 :(得分:3)

而不是从标记页面回调一个方法,而不是创建一个用于绑定Repeater的新类?这样就可以避免这个问题。

public class RepeaterItem
{
    public string Name;
    public string Variants;
}

然后将Repeater与新数据源绑定:

List<Products> products = //Get Products
List<RepeaterItem> repeaterItems = new List<RepeaterItem>();

foreach(var product in products)
{
    repeaterItems.Add(
        new RepeaterItem 
            { 
                Name = product.Name,
                Variants = GetVariants(product)
            });
}

rptr.DataSource = repeaterItems;