我在转发器中有一个转发器,我试图将子转发器与会话中的Aka列表绑定。
我的代码隐藏看起来像:
var results = HttpContext.Current.Session["completeRecord"];
var rep = (Repeater)e.Item.FindControl("rptAkas");
var akaList = new List<string>();
foreach (Entity list in (IEnumerable<Entity>) results)
{
akaList.AddRange(list.Aka);
}
rep.DataSource = akaList;
rep.DataBind();
在我的儿童中继器中,我有以下内容:
<asp:Repeater runat="server" ID="rptAkas" OnItemDataBound="repeater_OnItemDataBound">
<ItemTemplate>
<p><strong>Aka</strong><asp:Literal runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "akaList") %>'></asp:Literal></p>
</ItemTemplate>
</asp:Repeater>
这会抛出以下消息:
附加信息:DataBinding:'System.String'不包含名为'akaList'的属性。
如何将此列表绑定到转发器?
修改 的
Container.DataItem处理它。
答案 0 :(得分:1)
Container.DataItem
您的Repeater迭代的当前项目。它不是字符串列表,而是每个字符串。
想想你正在以更多伪代码形式做什么:
foreach ( var a_single_string in Repeater.DataSource )
{
var some_var = a_single_string.akaList;
}
当您引用Container.DataItem
时,它与上述示例中的a_single_string
地址相同。
远远不是实际适用的代码,但我希望它能解释为什么你会收到错误。您实际上是要求字符串的属性“akaList”,因此错误。