<%#Eval(“ State”)%>または<%#DataBinder.Eval(Container.DataItem、“ state”)%>
-
06-07-2019 - |
質問
持つことの違いは何ですか
<%# Eval("State") %>
aspx
ページで、対して
<%# DataBinder.Eval(Container.DataItem, "State") %>
aspx
ページで?
解決
Eval(&quot; State&quot;)は、DataBinder.Eval(Container.DataItem、&quot; State&quot;)構文の簡略化された形式です。データバインドテンプレートコントロール内でのみ機能します。
詳細については、 MSDNドキュメントを参照してください。
>他のヒント
違いはありません。 「評価」 methodは、DataBinder.Eval(Container.DataItem、&quot; blah&quot;)メソッドの単なるショートカットです。
&lt;%#Eval%&gt;
と&lt;%#DataBinder.Eval%&gt;
の間に多くの違いがありますが、< a href = "https://msdn.microsoft.com/en-us/library/ms178366.aspx#Anchor_1" rel = "nofollow">ドキュメントには、 Eval
( TemplateControl.Eval
は正確に)実際に DataBinder.Eval
を呼び出し、そのタスクはまったく同じジョブを実行することです。
それは正しいですが、 Eval
だけを使用すると、ASP.NET自体がデータバインドされたオブジェクトを解決することになります。これは、 Control.DataBind()
が呼び出されたときにアイテムが追加されるスタックで内部的に行われます。秘Theは、コントロールの Page
プロパティがその時点で非 null
の場合にのみ発生することです。
DataItem
を解決する必要がある時点に到達したときに、 Page
が管理するスタックが最新でない場合、 Page.GetDataItem( )
メソッドは、
Eval()
、XPath()
、およびBind()
などのデータバインディングメソッドは、データバインドのコンテキストでのみ使用できますコントロール。
DataBinder.Eval
は、ターゲットオブジェクトを手動で提供するため、これらの状況でも機能します。そのため、ASP.NETは独自に解決する必要はありません。
Evalメソッドは文字のショートカットにすぎません
次のコードを見ました
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
だから、それらはわずかに異なると思います。