是什麼有<%#的eval( 「國家」)%>或<%#DataBinder.Eval的(的Container.DataItem, 「狀態」)%>
<%# Eval("State") %>
在aspx
之間的區別與
<%# DataBinder.Eval(Container.DataItem, "State") %>
在您的aspx
頁面?
是什麼有<%#的eval( 「國家」)%>或<%#DataBinder.Eval的(的Container.DataItem, 「狀態」)%>
<%# Eval("State") %>
在aspx
之間的區別與
<%# DataBinder.Eval(Container.DataItem, "State") %>
在您的aspx
頁面?
的eval快捷方式(「國家」)是的DataBinder.Eval(的Container.DataItem,「國家」)語法的簡化形式。它只適用於數據綁定模板控件。
欲瞭解更多信息,請參閱the MSDN documentation。
沒有區別。 「Eval」方法只是DataBinder.Eval(Container.DataItem,「blah」)方法的快捷方式。
Eval方法只是後者
下面的代碼
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
我見過所以我猜他們稍有不同。
有很多的幕後<%# Eval %>
和<%# DataBinder.Eval %>
之間的差異,即使the documentation指出,使用Eval
(TemplateControl.Eval
是精確的)實際上是調用DataBinder.Eval
,他們的任務是做同樣的工作。
這是正確的,但只使用Eval
意味着ASP.NET本身解析數據綁定的對象。它在內部使用一個堆棧,在調用Control.DataBind()
時添加項目。訣竅是,只有當控件的Page
屬性在此時不是null
時纔會發生這種情況。
如果Page
-managed堆棧是不是最新的,當你到如此地步,DataItem
需要被解決,Page.GetDataItem()
方法會給異常,並像
數據綁定方法如消息,
XPath()
和Bind()
只能用於數據綁定控件的上下文中。
DataBinder.Eval
仍然適用於這些情況,因爲您手動爲它提供目標對象,所以ASP.NET不需要自行解決任何問題。
現在你有你的答案...它是回聲2次:) – 2008-11-06 21:20:10
大聲笑,是的,謝謝。 – Xaisoft 2008-11-06 21:30:48