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 对象到要放置在绑定控件属性中的公共属性值的导航路径。 这必须是由句点分隔的属性或字段名称的字符串,例如 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.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 数据绑定中使用的表达式语法。

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

注意

由于此方法执行后期绑定计算(在运行时使用反射),因此与标准 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 对象到要放置在绑定控件属性中的公共属性值的导航路径。 这必须是由句点分隔的属性或字段名称的字符串,例如 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.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中的格式字符串的详细信息,请参阅格式设置类型

在快速应用程序开发 (RAD) 设计器(如 Visual Studio)中创建数据绑定时,会自动调用此方法。 还可以以声明方式使用它,将 Object 数据绑定表达式生成的 转换为 String。 若要以声明方式使用 方法,请使用 <%# %> 在标准 ASP.NET 数据绑定中使用的表达式语法。

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

注意

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

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

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

另请参阅

适用于