2008-11-06 50 views

回答

37

的eval快捷方式(“国家”)是的DataBinder.Eval(的Container.DataItem,“国家”)语法的简化形式。它只适用于数据绑定模板控件。

欲了解更多信息,请参阅the MSDN documentation

11

没有区别。 “Eval”方法只是DataBinder.Eval(Container.DataItem,“blah”)方法的快捷方式。

4

Eval方法只是后者

-5

下面的代码

<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %> 

我见过所以我猜他们稍有不同。

8

有很多的幕后<%# Eval %><%# DataBinder.Eval %>之间的差异,即使the documentation指出,使用EvalTemplateControl.Eval是精确的)实际上是调用DataBinder.Eval,他们的任务是做同样的工作。

这是正确的,但只使用Eval意味着ASP.NET本身解析数据绑定的对象。它在内部使用一个堆栈,在调用Control.DataBind()时添加项目。诀窍是,只有当控件的Page属性在此时不是null时才会发生这种情况。

如果Page -managed堆栈是不是最新的,当你到如此地步,DataItem需要被解决,Page.GetDataItem()方法会给异常,并像

数据绑定方法如消息​​,XPath()Bind()只能用于数据绑定控件的上下文中。

DataBinder.Eval仍然适用于这些情况,因为您手动为它提供目标对象,所以ASP.NET不需要自行解决任何问题。

相关问题