持つことの違いは何ですか
<%# Eval("State") %>
あなたのaspx
ページで、持っているのではなく
<%# DataBinder.Eval(Container.DataItem, "State") %>
あなたのaspx
ページに?
持つことの違いは何ですか
<%# Eval("State") %>
あなたのaspx
ページで、持っているのではなく
<%# DataBinder.Eval(Container.DataItem, "State") %>
あなたのaspx
ページに?
Eval("State")
DataBinder.Eval(Container.DataItem, "State")
構文の簡略化された形式です。データ バインドされたテンプレート コントロール内でのみ機能します。
詳細については、MSDN ドキュメントを参照してください。
違いはありません。「Eval」メソッドは、DataBinder.Eval(Container.DataItem, "blah") メソッドの単なるショートカットです。
ドキュメントには、(正確には)実際に呼び出すと、そのタスクはまったく同じ仕事をすることであると記載されていますが、内部と内部には多くの違いがあり<%# Eval %>
ます。<%# DataBinder.Eval %>
Eval
TemplateControl.Eval
DataBinder.Eval
それは正しいですが、使用Eval
するということは、ASP.NET自体がデータバインドされているオブジェクトを解決することを意味します。これは、Control.DataBind()
が呼び出されたときにアイテムが追加されるスタックを使用して内部的に行われます。秘訣はPage
、コントロールのプロパティがnull
その時点で非である場合にのみこれが発生することです。
解決する必要Page
のあるポイントに到達したときに管理対象スタックが最新でない場合、メソッドは次のようなメッセージで例外を返します。DataItem
Page.GetDataItem()
Eval()
、、などのデータバインディングメソッドはXPath()
、Bind()
データバインディングコントロールのコンテキストでのみ使用できます。
DataBinder.Eval
ターゲットオブジェクトを手動で提供するため、このような状況でも機能します。そのため、ASP.NETは独自に解決を行う必要はありません。
Eval メソッドは後者の単なるショートカットです
次のコードを見ました
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
だから私は彼らが少し違うと思います。