DataBinder.Eval 方法

定义

使用反射在运行时针对对象分析和计算数据绑定表达式。

重载

名称 说明
Eval(Object, String)

在运行时计算数据绑定表达式。

Eval(Object, String, String)

在运行时计算数据绑定表达式,并将结果格式化为字符串。

注解

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

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.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 窗体配合使用的教程系列,请参阅 模型绑定和 Web 窗体

另请参阅

适用于

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.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 中的格式字符串的详细信息,请参阅 Formatting Types

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

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

注释

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

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

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

另请参阅

适用于