<%#Eval(“State”)%>或<%#DataBinder.Eval(Container.DataItem,“state”)%>

StackOverflow https://stackoverflow.com/questions/270230

  •  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()) %>

所以我猜他们略有不同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top