我正在尝试将数组绑定到转发器控件。当我尝试使用Eval时,它不起作用。当我使用Container.Dataitem时,它可以工作。为什么不同?我应该在哪些情况下使用Eval,哪些情况下我应该使用Container.Dataitem?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim values As New ArrayList()
values.Add("Foo1")
values.Add("Foo2")
values.Add("Foo3")
values.Add("Foo4")
values.Add("Foo5")
Repeater1.DataSource = values
Repeater1.DataBind()
End Sub
<asp:Repeater ID="Repeater1" runat="server" >
<ItemTemplate>
<%# Container.DataItem %>
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:1)
在这种特定情况下,Eval
将不起作用,因为您的DataItem
对象只是纯字符串。
documentation for the Eval
method说:
表达式参数的值必须计算为公共属性。
由于string
没有公共属性来获取其值,Eval
方法将失败,而Container.DataItem
属性将是实际字符串,因此将显示该值。