2008-11-06 54 views

回答

37

的eval快捷方式(「國家」)是的DataBinder.Eval(的Container.DataItem,「國家」)語法的簡化形式。它只適用於數據綁定模板控件。

欲瞭解更多信息,請參閱the MSDN documentation

11

沒有區別。 「Eval」方法只是DataBinder.Eval(Container.DataItem,「blah」)方法的快捷方式。

4

Eval方法只是後者

-5

下面的代碼

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

我見過所以我猜他們稍有不同。

8

有很多的幕後<%# Eval %><%# DataBinder.Eval %>之間的差異,即使the documentation指出,使用EvalTemplateControl.Eval是精確的)實際上是調用DataBinder.Eval,他們的任務是做同樣的工作。

這是正確的,但只使用Eval意味着ASP.NET本身解析數據綁定的對象。它在內部使用一個堆棧,在調用Control.DataBind()時添加項目。訣竅是,只有當控件的Page屬性在此時不是null時纔會發生這種情況。

如果Page -managed堆棧是不是最新的,當你到如此地步,DataItem需要被解決,Page.GetDataItem()方法會給異常,並像

數據綁定方法如消息​​,XPath()Bind()只能用於數據綁定控件的上下文中。

DataBinder.Eval仍然適用於這些情況,因爲您手動爲它提供目標對象,所以ASP.NET不需要自行解決任何問題。

相關問題