DataBinder.Eval メソッド

定義

リフレクションを使用して、実行時にオブジェクトに対してデータ バインディング式を解析および評価します。

オーバーロード

名前 説明
Eval(Object, String)

実行時にデータ バインディング式を評価します。

Eval(Object, String, String)

実行時にデータ バインディング式を評価し、結果を文字列として書式設定します。

注釈

.NET Framework 4.5 以降では、モデル バインドを使用して、以前のバージョンのデータ バインディングを使用して実行する必要があったタスクの一部を簡略化できます。 Web フォームでのモデル バインドの使用に関するチュートリアル シリーズについては、「 モデル バインドと Web フォーム」を参照してください。

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# の Tables[0].DefaultView.[0].Price や Visual Basic の Tables(0).DefaultView.(0).Price など、ピリオドで区切られたプロパティ名またはフィールド名の文字列である必要があります。

返品

データ バインディング式の評価結果の Object インスタンス。

例外

expressionnull されているか、トリミング後に空の文字列です。

次の例では、 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.DataItemcontainer メソッドを使用します。

<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>

または、Eval パラメーターcontainer含めずに関数を呼び出すことができます。

<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 データ バインディングで使用される <%# %> 式構文を使用します。

このメソッドは、テンプレート化されたリスト内のコントロールにデータをバインドする場合に特に便利です。

Note

このメソッドは遅延バインディング評価を実行するため、実行時にリフレクションを使用すると、標準の ASP.NET データ バインディング構文と比較してパフォーマンスが著しく低下する可能性があります。

リスト Web コントロール (GridViewDetailsViewDataListRepeaterなど) については、containerContainer.DataItemする必要があります。 ページに対してバインドする場合は、 containerPageする必要があります。

.NET Framework 4.5 以降では、モデル バインドを使用して、以前のバージョンのデータ バインディングを使用して実行する必要があったタスクの一部を簡略化できます。 Web フォームでのモデル バインドの使用に関するチュートリアル シリーズについては、「 モデル バインドと Web フォーム」を参照してください。

こちらもご覧ください

適用対象

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# の Tables[0].DefaultView.[0].Price や Visual Basic の Tables(0).DefaultView.(0).Price など、ピリオドで区切られたプロパティ名またはフィールド名の文字列である必要があります。

format
String

データ バインディング式によって返される Format(String, Object) インスタンスを Object オブジェクトに変換する.NET Framework 書式指定文字列 (String で使用される文字列など)。

返品

データ バインディング式を評価して文字列型に変換した結果の 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.DataItemcontainer メソッドを使用します。

<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>

または、Eval パラメーターcontainer含めずに関数を呼び出すことができます。

<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 の書式指定文字列の詳細については、「Formatting Types」を参照してください。

このメソッドは、Visual Studioなどの迅速なアプリケーション開発 (RAD) デザイナーでデータ バインディングを作成するときに自動的に呼び出されます。 これを宣言的に使用して、データ バインディング式の結果の ObjectStringに変換することもできます。 メソッドを宣言的に使用するには、標準の ASP.NET データ バインディングで使用される <%# %> 式構文を使用します。

このメソッドは、テンプレート化されたリスト内のコントロールにデータをバインドする場合に特に便利です。

Note

このメソッドは遅延バインディング評価を実行するため、実行時にリフレクションを使用すると、標準の ASP.NET データ バインディング構文と比較してパフォーマンスが著しく低下する可能性があります。 特に文字列の書式設定が不要な場合は、このメソッドを慎重に使用してください。

リスト Web コントロール (GridViewDetailsViewDataListRepeaterなど) については、containerContainer.DataItemする必要があります。 ページに対してバインドする場合は、 containerPageする必要があります。

.NET Framework 4.5 以降では、モデル バインドを使用して、以前のバージョンのデータ バインディングを使用して実行する必要があったタスクの一部を簡略化できます。 Web フォームでのモデル バインドの使用に関するチュートリアル シリーズについては、「 モデル バインドと Web フォーム」を参照してください。

こちらもご覧ください

適用対象