DataBinder.Eval メソッド

定義

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

オーバーロード

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 インスタンス。

例外

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>

または、 パラメーターを含めずに関数を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.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>

または、 パラメーターを含めずに関数を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」を参照してください。

こちらもご覧ください

適用対象