DataBinder.Eval メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
リフレクションを使用して、オブジェクトに対するデータ バインディング式を実行時に解析および評価します。
オーバーロード
Eval(Object, String) |
実行時にデータ バインディング式を評価します。 |
Eval(Object, String, String) |
実行時にデータ バインディング式を評価し、その結果を文字列として書式設定します。 |
注釈
.NET Framework 4.5 以降では、モデル バインドを使用して、以前のバージョンのデータ バインディングを使用して実行する必要があったタスクの一部を簡略化できます。 Web Formsでのモデル バインドの使用に関するチュートリアル シリーズについては、「モデル バインドとWeb Forms」を参照してください。
Eval(Object, String)
実行時にデータ バインディング式を評価します。
public:
static System::Object ^ Eval(System::Object ^ container, System::String ^ expression);
public static object Eval (object container, string expression);
static member Eval : obj * string -> obj
Public Shared Function Eval (container As Object, expression As String) As Object
パラメーター
- container
- Object
式の評価に使用するオブジェクト参照。 これは、ページの指定された言語による有効なオブジェクト識別子である必要があります。
- expression
- String
バインドされたコントロール プロパティに配置される、container
オブジェクトからパブリック プロパティ値へのナビゲーション パス。 これは、C# や Visual Basic など Tables[0].DefaultView.[0].Price
、ピリオドで区切られたプロパティ名または Tables(0).DefaultView.(0).Price
フィールド名の文字列である必要があります。
戻り値
データ バインディング式の評価の結果として取得される Object インスタンス。
例外
expression
が null
か、トリムすると空の文字列になります。
例
次の例では、 メソッドを使用してデータを Eval
コントロールにバインドする方法を Repeater 示します。 Product という名前のデータ クラスが必要です。
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
Public Class Product
Public Property ProductID As Integer
Public Property Name As String
Public Property Price As Double
End Class
分離コード ファイルはテスト データを読み込み、そのデータをコントロールに Repeater バインドします。
public partial class ShowProducts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var products = new List<Product>();
products.Add(new Product() { ProductID = 1, Name = "Bike", Price = 150.00 });
products.Add(new Product() { ProductID = 2, Name = "Helmet", Price = 19.99 });
products.Add(new Product() { ProductID = 3, Name = "Tire", Price = 10.00 });
ProductList.DataSource = products;
ProductList.DataBind();
}
}
Public Class ShowProducts
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim products As New List(Of Product)()
products.Add(New Product With {.ProductID = 1, .Name = "Bike", .Price = 150.0})
products.Add(New Product With {.ProductID = 2, .Name = "Helmet", .Price = 19.99})
products.Add(New Product With {.ProductID = 3, .Name = "Tire", .Price = 10.0})
ProductList.DataSource = products
ProductList.DataBind()
End Sub
End Class
コントロールの宣言型構文 Repeater では、 パラメーターに と の Eval メソッド Container.DataItem
を container
使用します。
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %> for only <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
<br />
<a href='<%# DataBinder.Eval(Container.DataItem, "ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %> for only <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
<br />
<a href='<%# DataBinder.Eval(Container.DataItem, "ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
または、 パラメーターを含めずに関数をcontainer
呼び出Eval
すことができます。
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# Eval("Name") %> for only <%# Eval("Price", "{0:c}") %>
<br />
<a href='<%# Eval("ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# Eval("Name") %> for only <%# Eval("Price", "{0:c}") %>
<br />
<a href='<%# Eval("ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
注釈
パラメーターの expression
値は、パブリック プロパティに評価される必要があります。
このメソッドは、Visual Studio などの迅速なアプリケーション開発 (RAD) デザイナーでデータ バインディングを作成すると自動的に呼び出されます。 これを宣言的に使用して、テキスト文字列へのキャストを簡略化することもできます。 これを行うには、標準の <%# %>
ASP.NET データ バインディングで使用される式構文を使用します。
このメソッドは、テンプレート化されたリスト内のコントロールにデータをバインドする場合に特に便利です。
注意
このメソッドは遅延バインディング評価を実行するため、実行時にリフレクションを使用すると、標準の ASP.NET データ バインディング構文と比較してパフォーマンスが著しく低下する可能性があります。
リスト Web コントロール (、、 Repeatercontainer
などDataListGridViewDetailsView) の場合は、 にするContainer.DataItem
必要があります。 ページに対してバインドする場合は、 container
を にする Page
必要があります。
.NET Framework 4.5 以降では、モデル バインドを使用して、以前のバージョンのデータ バインディングを使用して実行する必要があったタスクの一部を簡略化できます。 Web Formsでのモデル バインドの使用に関するチュートリアル シリーズについては、「モデル バインドとWeb Forms」を参照してください。
こちらもご覧ください
適用対象
Eval(Object, String, String)
実行時にデータ バインディング式を評価し、その結果を文字列として書式設定します。
public:
static System::String ^ Eval(System::Object ^ container, System::String ^ expression, System::String ^ format);
public static string Eval (object container, string expression, string format);
static member Eval : obj * string * string -> string
Public Shared Function Eval (container As Object, expression As String, format As String) As String
パラメーター
- container
- Object
式の評価に使用するオブジェクト参照。 これは、ページの指定された言語による有効なオブジェクト識別子である必要があります。
- expression
- String
バインドされたコントロール プロパティに配置される、container
オブジェクトからパブリック プロパティ値へのナビゲーション パス。 これは、C# や Visual Basic など Tables[0].DefaultView.[0].Price
、ピリオドで区切られたプロパティ名または Tables(0).DefaultView.(0).Price
フィールド名の文字列である必要があります。
- format
- String
データ バインディング式によって返された Object インスタンスを String オブジェクトに変換する (Format(String, Object) で使用されているような) .NET Framework 書式指定文字列。
戻り値
データ バインディング式を評価してその式を文字列型に変換した結果として取得される String オブジェクト。
例
次の例では、 メソッドを使用してデータを Eval
コントロールにバインドする方法を Repeater 示します。 Product という名前のデータ クラスが必要です。
public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
Public Class Product
Public Property ProductID As Integer
Public Property Name As String
Public Property Price As Double
End Class
分離コード ファイルはテスト データを読み込み、そのデータをコントロールに Repeater バインドします。
public partial class ShowProducts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var products = new List<Product>();
products.Add(new Product() { ProductID = 1, Name = "Bike", Price = 150.00 });
products.Add(new Product() { ProductID = 2, Name = "Helmet", Price = 19.99 });
products.Add(new Product() { ProductID = 3, Name = "Tire", Price = 10.00 });
ProductList.DataSource = products;
ProductList.DataBind();
}
}
Public Class ShowProducts
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim products As New List(Of Product)()
products.Add(New Product With {.ProductID = 1, .Name = "Bike", .Price = 150.0})
products.Add(New Product With {.ProductID = 2, .Name = "Helmet", .Price = 19.99})
products.Add(New Product With {.ProductID = 3, .Name = "Tire", .Price = 10.0})
ProductList.DataSource = products
ProductList.DataBind()
End Sub
End Class
コントロールの宣言型構文 Repeater では、 パラメーターに と の Eval メソッド Container.DataItem
を container
使用します。
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %> for only <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
<br />
<a href='<%# DataBinder.Eval(Container.DataItem, "ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %> for only <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
<br />
<a href='<%# DataBinder.Eval(Container.DataItem, "ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
または、 パラメーターを含めずに関数をcontainer
呼び出Eval
すことができます。
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# Eval("Name") %> for only <%# Eval("Price", "{0:c}") %>
<br />
<a href='<%# Eval("ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="ProductList" runat="server">
<ItemTemplate>
<%# Eval("Name") %> for only <%# Eval("Price", "{0:c}") %>
<br />
<a href='<%# Eval("ProductID", "details.asp?id={0}") %>'>See Details</a>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
注釈
の expression
値は、パブリック プロパティに評価される必要があります。
.NET Frameworkの書式指定文字列の詳細については、「型の書式設定」を参照してください。
このメソッドは、Visual Studio などの迅速なアプリケーション開発 (RAD) デザイナーでデータ バインディングを作成すると自動的に呼び出されます。 これを宣言的に使用して、データ バインディング式の結果を にString変換Objectすることもできます。 メソッドを宣言的に使用するには、標準の <%# %>
ASP.NET データ バインディングで使用される式構文を使用します。
このメソッドは、テンプレート化されたリスト内のコントロールにデータをバインドする場合に特に便利です。
注意
このメソッドは遅延バインディング評価を実行するため、実行時にリフレクションを使用すると、標準の ASP.NET データ バインディング構文と比較してパフォーマンスが著しく低下する可能性があります。 特に文字列の書式設定が不要な場合は、このメソッドを慎重に使用してください。
リスト Web コントロール (、、 Repeatercontainer
などDataListGridViewDetailsView) の場合は、 にするContainer.DataItem
必要があります。 ページに対してバインドする場合は、 container
を にする Page
必要があります。
.NET Framework 4.5 以降では、モデル バインドを使用して、以前のバージョンのデータ バインディングを使用して実行する必要があったタスクの一部を簡略化できます。 Web Formsでのモデル バインドの使用に関するチュートリアル シリーズについては、「モデル バインドとWeb Forms」を参照してください。
こちらもご覧ください
適用対象
.NET