为什么在场景中使用Container.Dataitem而不是Eval?

时间:2014-05-21 20:10:27

标签: c# asp.net

我正在尝试将数组绑定到转发器控件。当我尝试使用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>

1 个答案:

答案 0 :(得分:1)

在这种特定情况下,Eval将不起作用,因为您的DataItem对象只是纯字符串。

documentation for the Eval method说:

  

表达式参数的值必须计算为公共属性。

由于string没有公共属性来获取其值,Eval方法将失败,而Container.DataItem属性将是实际字符串,因此将显示该值。