<%#Eval(“ State”)%>または<%#DataBinder.Eval(Container.DataItem、“ state”)%>

StackOverflow https://stackoverflow.com/questions/270230

  •  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()) %>

だから、それらはわずかに異なると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top