DataBinder.Eval 方法

定義

利用反射在執行時解析並評估物件上的資料綁定表達式。

多載

名稱 Description
Eval(Object, String)

執行時評估資料綁定表達式。

Eval(Object, String, String)

執行時評估資料綁定表達式,並將結果格式化為字串。

備註

從 .NET Framework 4.5 開始,你可以使用模型綁定來簡化早期版本中必須透過資料綁定執行的一些任務。 關於如何使用網頁表單進行模型綁定的教學系列,請參見 「模型綁定與網頁表單」。

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 必須被評估為公共財產。

當你在快速應用程式開發(RAD)設計器(如 Visual Studio)建立資料綁定時,此方法會自動被呼叫。 你也可以用宣告式的方式來簡化投法成文字串。 為此,你使用 <%# %> 表達式語法,與標準 ASP.NET 資料綁定相同。

此方法在將資料綁定到模板清單中的控制項時特別有用。

Note

由於此方法執行延遲界定評估,並在執行時使用反射,因此相較於標準 ASP.NET 資料綁定語法,效能可能明顯較慢。

對於任何列表中的 Web 控制項,如 GridViewDetailsViewDataList、 或 Repeatercontainer 應為 Container.DataItem。 如果你是用書頁裝 container 訂,應該是 Page

從 .NET Framework 4.5 開始,你可以使用模型綁定來簡化早期版本中必須透過資料綁定執行的一些任務。 關於如何使用網頁表單進行模型綁定的教學系列,請參見 「模型綁定與網頁表單」。

另請參閱

適用於

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

一個.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.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 框架中格式字串的資訊,請參見 Formatting Types

當你在快速應用程式開發(RAD)設計器(如 Visual Studio)建立資料綁定時,此方法會自動被呼叫。 你也可以用宣告式的方式,將資料綁定表達式的結果轉換 ObjectString。 若要宣告式使用此方法,請使用 <%# %> 表達式語法,與標準 ASP.NET 資料綁定相同。

此方法在將資料綁定到模板清單中的控制項時特別有用。

Note

由於此方法執行延遲界定評估,並在執行時使用反射,因此相較於標準 ASP.NET 資料綁定語法,效能可能明顯較慢。 請謹慎使用此方法,尤其當不需要字串格式時。

對於任何列表中的 Web 控制項,如 GridViewDetailsViewDataList、 或 Repeatercontainer 應為 Container.DataItem。 如果你是用書頁裝 container 訂,應該是 Page

從 .NET Framework 4.5 開始,你可以使用模型綁定來簡化早期版本中必須透過資料綁定執行的一些任務。 關於如何使用網頁表單進行模型綁定的教學系列,請參見 「模型綁定與網頁表單」。

另請參閱

適用於