有
之间有什么区别<%# Eval("State") %>
在您的aspx
页面中,而不是
<%# DataBinder.Eval(Container.DataItem, "State") %>
在您的aspx
页面中?
答案 0 :(得分:39)
Eval(“State”)是DataBinder.Eval(Container.DataItem,“State”)语法的简化形式。它仅适用于数据绑定模板控件。
有关详细信息,请参阅the MSDN documentation。
答案 1 :(得分:11)
没有区别。 “Eval”方法只是DataBinder.Eval(Container.DataItem,“blah”)方法的快捷方式。
答案 2 :(得分:9)
<%# Eval %>
和<%# DataBinder.Eval %>
之间存在很多差异,即使the documentation指出使用Eval
(TemplateControl.Eval
确切)实际上调用DataBinder.Eval
并且他们的任务是完成相同的工作。
这是正确的,但仅使用Eval
意味着ASP.NET本身会解析数据绑定对象。它在内部使用堆栈执行此操作,其中在调用Control.DataBind()
时添加项目。诀窍是,只有当控件的Page
属性在那时不是null
时才会发生这种情况。
如果Page
- 托管堆栈在达到需要解析DataItem
的时候不是最新的,Page.GetDataItem()
方法会给出一条带有消息的异常像
Eval()
,XPath()
和Bind()
等数据绑定方法只能在数据绑定控件的上下文中使用。
DataBinder.Eval
在这些情况下仍然有效,因为您手动为其提供了目标对象,因此ASP.NET不需要自行解析。
答案 3 :(得分:4)
Eval方法只是字母的快捷方式
答案 4 :(得分:-5)
我见过以下代码
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
所以我猜他们略有不同。