和有什么区别
<%# Eval("State") %>
在您的aspx
页面中,而不是
<%# DataBinder.Eval(Container.DataItem, "State") %>
在你的aspx
页面?
和有什么区别
<%# Eval("State") %>
在您的aspx
页面中,而不是
<%# DataBinder.Eval(Container.DataItem, "State") %>
在你的aspx
页面?
Eval("State")
是DataBinder.Eval(Container.DataItem, "State")
语法的简化形式。它仅适用于数据绑定模板控件。
有关详细信息,请参阅MSDN 文档。
没有区别。"Eval" 方法只是 DataBinder.Eval(Container.DataItem, "blah") 方法的快捷方式。
尽管文档指出使用(确切地说)实际上是调用并且他们的任务是做完全相同的工作,但它们之间<%# Eval %>
还是存在很多差异。<%# DataBinder.Eval %>
Eval
TemplateControl.Eval
DataBinder.Eval
这是正确的,但使用只是Eval
意味着 ASP.NET 本身会解析数据绑定的对象。它在内部使用堆栈执行此操作,在Control.DataBind()
调用时添加项目。诀窍是只有当Page
控件的属性在该点是非时才会发生这种情况null
。
如果-managed 堆栈在您到达需要解决Page
的点时不是最新的,则该方法将给出异常并显示如下消息DataItem
Page.GetDataItem()
诸如 、 和 等数据绑定方法
Eval()
只能XPath()
在Bind()
数据绑定控件的上下文中使用。
DataBinder.Eval
在这些情况下仍然有效,因为您手动为其提供了目标对象,因此 ASP.NET 不需要自己进行任何解析。
Eval 方法只是后者的一个捷径
我看过以下代码
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
所以我猜他们略有不同。