2010-04-13 59 views
5

我想了解Eval()如何用于特定目的。我正在研究一个我不太了解的项目,我需要阅读一些数据并将它们放在下拉列表中。这些数据已经被读取并显示在ItemTemplate中。我注意到有读取使用Eval()方法。 喜欢的东西:ASP .NET - Eval()背后发生了什么?

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

我需要知道评估和演示从为了得到这些数据,发现在那里我应该为我的下拉列表阅读!但我真的不明白它是如何工作的! 我知道Eval()在运行时评估数据绑定表达式,但您认为我应该看看哪些内容?

谢谢

回答

2

Eval是一种快捷方式。这是一个实际的方法调用,但不像Bind,这更像是一个代码片段。

关于Data-Binding Expressions的MSDN文章应该给你一个非常好的概述。

简而言之,解析器在读取页面时调用DataBinder.Eval,并将上下文中的当前DataItem和您指定的字符串一起传入。这很像从DataReader读取列。

上下文中的DataItem取决于发生的情况。例如,在一个GridView中,这可能就像一个DataTable中的DataRow对象,它与GridView绑定,但它可以是任何对象,因为它通过反射工作。在DataRow的情况下,Eval(“Foo”)会尝试从DataRow的Foo列提取数据。

你现在可以看到这可能会变坏。如果DataRow停止包含Foo列,那么Eval调用将惨败,但直到运行时才会失败,因为没有涉及强类型/名称检查。