ASP.NET - Eval()背后发生了什么?

5

我正在尝试了解Eval()函数的工作原理,以实现特定目的。我正在从事一个我不太熟悉的项目,并需要读取一些数据并将它们放入下拉列表中。这些数据已经被读取,并在ItemTemplate中显示。我注意到它们是通过Eval()方法读取的。

<ItemTemplate>
   <a href="...=<%# Eval("foo") %>></a>
</ItemTemplate>

我需要知道Eval从哪里获取这些数据,以便发现我应该在哪里读取它们以供我的下拉列表使用!但我真的不明白它是如何工作的!我知道Eval()在运行时评估数据绑定表达式,但你认为我应该看哪里?谢谢。
2个回答


2
“Eval”是一种快捷方式,但它实际上是一个方法调用,不像“Bind”那样更像代码片段。《MSDN》关于数据绑定表达式的文章应该能够给你提供很好的概述。简单地说,解析器在读取页面时调用DataBinder.Eval并传入当前上下文中的DataItem和您指定的字符串。这很像从DataReader读取列。上下文中的DataItem取决于此发生的位置。例如,在GridView中,这可能类似于GridView绑定到的DataTable中的DataRow对象,但它实际上可以是任何对象,因为它通过反射工作。对于DataRow,Eval("Foo")将尝试从DataRow的Foo列中提取数据。现在您可以看到这可能会出问题。如果DataRow停止包含Foo列,则Eval调用将失败,但直到运行时才会失败,因为没有强类型/名称检查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接