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

Xai*_*oft 35 asp.net data-binding eval

有什么区别

<%# Eval("State") %>
Run Code Online (Sandbox Code Playgroud)

在你的aspx页面,而不是

<%# DataBinder.Eval(Container.DataItem, "State") %>
Run Code Online (Sandbox Code Playgroud)

在你的aspx页面?

Jer*_*ine 39

Eval("State")是DataBinder.Eval(Container.DataItem,"State")语法的简化形式.它仅适用于数据绑定模板控件.

有关详细信息,请参阅MSDN文档.


Tim*_*uri 11

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


Ram*_*rma 9

虽然文档声明使用(确切地说)实际调用并且他们的任务是完成相同的工作,但是在封面<%# Eval %><%# DataBinder.Eval %>封面之间存在很多差异.EvalTemplateControl.EvalDataBinder.Eval

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

如果Page当你到达DataItem需要解决的点时,管理堆栈不是最新的,那么该Page.GetDataItem()方法将给出一个例外消息

数据绑定方法如Eval(),XPath(),和Bind()只能在数据绑定控件的上下文中使用.

DataBinder.Eval 因为你手动为它提供了目标对象,所以仍然可以在这些情况下工作,因此ASP.NET不需要自己进行任何解析.

  • 当发生以下错误时,"数据绑定方法如Eval(),XPath()和Bind()只能在数据绑定控件的上下文中使用." 那么我们应该使用<%#DataBinder.Eval%>而不是<%#Eval%>. (2认同)