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# 中的 Tables[0].DefaultView.[0].Price 或 Visual Basic 中的 Tables(0).DefaultView.(0).Price

返回

Object

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 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# 中的 Tables[0].DefaultView.[0].Price 或 Visual Basic 中的 Tables(0).DefaultView.(0).Price

format
String

.NET Framework 格式字符串(如 Format(String, Object) 使用的字符串),它将数据绑定表达式返回的 Object 实例转换为 String 对象。

返回

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)中创建数据绑定时,会自动调用此方法。 还可以以声明方式使用它将数据绑定表达式生成的结果转换为 Object a String。 若要以声明方式使用该方法,请使用<%# %>标准 ASP.NET 数据绑定中使用的表达式语法。

将数据绑定到模板化列表中的控件时,此方法特别有用。

备注

由于此方法在运行时使用反射执行后期绑定评估,因此与标准 ASP.NET 数据绑定语法相比,可能会导致性能明显缓慢。 谨慎使用此方法,尤其是在不需要字符串格式时。

对于任何列表 Web 控件(例如 GridViewDetailsViewDataListRepeatercontainer 应为 Container.DataItem。 如果要对页面绑定, container 应为 Page

从 .NET Framework 4.5 开始,可以使用模型绑定来简化在早期版本中通过数据绑定执行的某些任务。 有关将模型绑定与Web Forms配合使用的教程系列,请参阅模型绑定和Web Forms

另请参阅

适用于