<%#Eval(“State”)%>或<%#DataBinder.Eval(Container.DataItem,“state”)%>
-
06-07-2019 - |
题
有
之间有什么区别<%# Eval("State") %>
在 aspx
页面中,而不是
<%# DataBinder.Eval(Container.DataItem, "State") %>
aspx
页面中的?
解决方案
Eval(“State”)是DataBinder.Eval(Container.DataItem,“State”)语法的简化形式。它仅适用于数据绑定模板控件。
有关详细信息,请参阅 MSDN文档。
其他提示
没有区别。 “Eval”是指“Eval”。 method只是DataBinder.Eval(Container.DataItem,&quot; blah&quot;)方法的快捷方式。
&lt;%#Eval%&gt;
和&lt;%#DataBinder.Eval%&gt;
之间存在很多差异,即使< a href =“https://msdn.microsoft.com/en-us/library/ms178366.aspx#Anchor_1"rel =”nofollow“>文档说明使用 Eval
(准确地说, TemplateControl.Eval
实际上调用 DataBinder.Eval
,并且他们的任务是完成相同的工作。
这是正确的,但仅使用 Eval
意味着ASP.NET本身解析了数据绑定对象。它在内部使用堆栈执行此操作,其中在调用 Control.DataBind()
时添加项目。诀窍是,只有当控件的 Page
属性在那时非 null
时才会发生这种情况。
如果 Page
- 管理堆栈不是最新的,当你需要解析 DataItem
时, Page.GetDataItem( )
方法将使用类似
数据绑定方法,例如
Eval()
,XPath()
和Bind()
只能在数据绑定的上下文中使用控制。
DataBinder.Eval
仍然适用于这些情况,因为您手动为其提供目标对象,因此ASP.NET不需要自行解析。
Eval方法只是字母的快捷方式
我见过以下代码
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
所以我猜他们略有不同。