DataBinder.Eval 方法

定義

使用反映在 Run Time 時針對物件剖析並評估資料繫結運算式。

多載

Eval(Object, String)

在執行階段評估資料繫結運算式。

Eval(Object, String, String)

在執行階段評估資料繫結運算式,並將結果格式化為字串。

備註

從 .NET Framework 4.5 開始,您可以使用模型系結來簡化一些您必須透過舊版資料系結執行的工作。 如需搭配Web Form使用模型系結的教學課程系列,請參閱模型系結和Web Form

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 物件到要放置在繫結控制項屬性中的公用屬性值。 這必須是以句號分隔的屬性或功能變數名稱字串,例如 Tables[0].DefaultView.[0].Price 在 C# Tables(0).DefaultView.(0).Price 或 Visual Basic 中。

傳回

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

或者,您可以呼叫 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 必須評估為公用屬性。

當您在快速的應用程式開發 (RAD) 設計工具中建立資料系結,例如 Visual Studio 時,會自動呼叫此方法。 您也可以以宣告方式使用它來簡化轉換成文字字串。 若要這樣做,您可以使用 <%# %> 運算式語法,如標準 ASP.NET 資料系結所示。

當將資料系結至樣板化清單中的控制項時,這個方法特別有用。

注意

由於此方法會在執行時間使用反映來執行晚期繫結評估,因此相較于標準 ASP.NET 資料系結語法,效能可能會明顯變慢。

對於任何清單 Web 控制項,例如 GridViewDetailsViewDataListRepeatercontainer 應該是 Container.DataItem 。 如果您要系結至頁面, container 則應該是 Page

從 .NET Framework 4.5 開始,您可以使用模型系結來簡化一些您必須透過舊版資料系結執行的工作。 如需搭配Web Form使用模型系結的教學課程系列,請參閱模型系結和Web Form

另請參閱

適用於

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 物件到要放置在繫結控制項屬性中的公用屬性值。 這必須是以句號分隔的屬性或功能變數名稱字串,例如 Tables[0].DefaultView.[0].Price 在 C# Tables(0).DefaultView.(0).Price 或 Visual Basic 中。

format
String

.NET Framework 格式字串 (如同 Format(String, Object) 所使用的字串),會將資料繫結運算式傳回的 Object 執行個體轉換成 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.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>

或者,您可以呼叫 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中格式化字串的詳細資訊,請參閱格式化類型

當您在快速的應用程式開發 (RAD) 設計工具中建立資料系結,例如 Visual Studio 時,會自動呼叫此方法。 您也可以以宣告方式使用它,將資料系結運算式 String 所產生的 轉換為 Object 。 若要以宣告方式使用 方法,請使用 <%# %> 運算式語法,如標準 ASP.NET 資料系結所示。

當將資料系結至樣板化清單中的控制項時,這個方法特別有用。

注意

由於此方法會在執行時間使用反映來執行晚期繫結評估,因此相較于標準 ASP.NET 資料系結語法,效能可能會明顯變慢。 請謹慎使用這個方法,特別是當不需要字串格式設定時。

對於任何清單 Web 控制項,例如 GridViewDetailsViewDataListRepeatercontainer 應該是 Container.DataItem 。 如果您要系結至頁面, container 則應該是 Page

從 .NET Framework 4.5 開始,您可以使用模型系結來簡化一些您必須透過舊版資料系結執行的工作。 如需搭配Web Form使用模型系結的教學課程系列,請參閱模型系結和Web Form

另請參閱

適用於