38

和有什么区别

<%# Eval("State") %>

在您的aspx页面中,而不是

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

在你的aspx页面?

4

5 回答 5

40

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

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

于 2008-11-06T20:58:48.123 回答
11

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

于 2008-11-06T20:56:42.383 回答
10

尽管文档指出使用(确切地说)实际上是调用并且他们的任务是做完全相同的工作,但它们之间<%# Eval %>还是存在很多差异。<%# DataBinder.Eval %>EvalTemplateControl.EvalDataBinder.Eval

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

如果-managed 堆栈在您到达需要解决Page的点时不是最新的,则该方法将给出异常并显示如下消息DataItemPage.GetDataItem()

诸如 、 和 等数据绑定方法Eval()只能XPath()Bind()数据绑定控件的上下文中使用。

DataBinder.Eval在这些情况下仍然有效,因为您手动为其提供了目标对象,因此 ASP.NET 不需要自己进行任何解析。

于 2013-01-31T10:53:41.230 回答
4

Eval 方法只是后者的一个捷径

于 2008-11-06T20:57:23.337 回答
-5

我看过以下代码

<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>

所以我猜他们略有不同。

于 2012-12-10T16:56:51.403 回答