DataBinder.Eval Método

Definición

Usa la reflexión para analizar y evaluar una expresión de enlace de datos en un objeto en tiempo de ejecución.

Sobrecargas

Nombre Description
Eval(Object, String)

Evalúa las expresiones de enlace de datos en tiempo de ejecución.

Eval(Object, String, String)

Evalúa las expresiones de enlace de datos en tiempo de ejecución y da formato al resultado como una cadena.

Comentarios

A partir de .NET Framework 4.5, puede usar el enlace de modelos para simplificar algunas de las tareas que tenía que realizar a través del enlace de datos en versiones anteriores. Para ver una serie de tutoriales sobre el uso del enlace de modelos con formularios web Forms, consulte Enlace de modelos y formularios web.

Eval(Object, String)

Evalúa las expresiones de enlace de datos en tiempo de ejecución.

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

Parámetros

container
Object

Referencia de objeto con la que se evalúa la expresión. Debe ser un identificador de objeto válido en el idioma especificado de la página.

expression
String

Ruta de navegación del container objeto al valor de la propiedad pública que se va a colocar en la propiedad de control enlazada. Debe ser una cadena de nombres de campo o propiedad separados por puntos, como Tables[0].DefaultView.[0].Price en C# o Tables(0).DefaultView.(0).Price en Visual Basic.

Devoluciones

Instancia Object resultante de la evaluación de la expresión de enlace de datos.

Excepciones

expression es null o es una cadena vacía después del recorte.

Ejemplos

En los ejemplos siguientes se muestra cómo usar el Eval método para enlazar datos al Repeater control. Requiere una clase de datos denominada 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

El archivo de código subyacente carga los datos de prueba y enlaza esos datos a un Repeater control.

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

En la sintaxis declarativa del Repeater control, se usa el Eval método con Container.DataItem para el container parámetro .

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

O bien, puede llamar a la Eval función y no incluir el container parámetro .

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

Comentarios

El valor del expression parámetro debe evaluarse como una propiedad pública.

Se llama automáticamente a este método cuando se crean enlaces de datos en un diseñador de desarrollo rápido de aplicaciones (RAD), como Visual Studio. También puede usarlo mediante declaración para simplificar la conversión a una cadena de texto. Para ello, use la sintaxis de expresión <%# %>, como se usa en el enlace de datos ASP.NET estándar.

Este método es especialmente útil cuando se enlazan datos a controles que se encuentran en una lista con plantilla.

Note

Dado que este método realiza una evaluación enlazada en tiempo de ejecución, el uso de la reflexión en tiempo de ejecución puede provocar que el rendimiento sea notablemente lento en comparación con la sintaxis de enlace de datos estándar ASP.NET.

Para cualquiera de los controles web de lista, como GridView, DetailsView, DataListo Repeater, container debe ser Container.DataItem. Si va a enlazar con la página, container debe ser Page.

A partir de .NET Framework 4.5, puede usar el enlace de modelos para simplificar algunas de las tareas que tenía que realizar a través del enlace de datos en versiones anteriores. Para ver una serie de tutoriales sobre el uso del enlace de modelos con formularios web Forms, consulte Enlace de modelos y formularios web.

Consulte también

Se aplica a

Eval(Object, String, String)

Evalúa las expresiones de enlace de datos en tiempo de ejecución y da formato al resultado como una cadena.

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

Parámetros

container
Object

Referencia de objeto con la que se evalúa la expresión. Debe ser un identificador de objeto válido en el idioma especificado de la página.

expression
String

Ruta de navegación del container objeto al valor de la propiedad pública que se va a colocar en la propiedad de control enlazada. Debe ser una cadena de nombres de campo o propiedad separados por puntos, como Tables[0].DefaultView.[0].Price en C# o Tables(0).DefaultView.(0).Price en Visual Basic.

format
String

Cadena de formato .NET Framework (como las usadas por Format(String, Object)) que convierte la instancia de Object devuelta por la expresión de enlace de datos a un objeto String.

Devoluciones

Objeto String que resulta de evaluar la expresión de enlace de datos y convertirlo en un tipo de cadena.

Ejemplos

En los ejemplos siguientes se muestra cómo usar el Eval método para enlazar datos al Repeater control. Requiere una clase de datos denominada 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

El archivo de código subyacente carga los datos de prueba y enlaza esos datos a un Repeater control.

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

En la sintaxis declarativa del Repeater control, se usa el Eval método con Container.DataItem para el container parámetro .

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

O bien, puede llamar a la Eval función y no incluir el container parámetro .

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

Comentarios

El valor de expression debe evaluarse como una propiedad pública.

Para obtener más información sobre las cadenas de formato en .NET Framework, vea Formatting Types.

Se llama automáticamente a este método cuando se crean enlaces de datos en un diseñador de desarrollo rápido de aplicaciones (RAD), como Visual Studio. También puede usarlo mediante declaración para convertir el Object resultado de la expresión de enlace de datos en .String Para usar el método mediante declaración, use la sintaxis de expresión <%# %>, como se usa en el enlace de datos ASP.NET estándar.

Este método es especialmente útil cuando se enlazan datos a controles que se encuentran en una lista con plantilla.

Note

Dado que este método realiza una evaluación enlazada en tiempo de ejecución, el uso de la reflexión en tiempo de ejecución puede provocar que el rendimiento sea notablemente lento en comparación con la sintaxis de enlace de datos estándar ASP.NET. Use este método con criterio, especialmente cuando no se requiera formato de cadena.

Para cualquiera de los controles web de lista, como GridView, DetailsView, DataListo Repeater, container debe ser Container.DataItem. Si va a enlazar con la página, container debe ser Page.

A partir de .NET Framework 4.5, puede usar el enlace de modelos para simplificar algunas de las tareas que tenía que realizar a través del enlace de datos en versiones anteriores. Para ver una serie de tutoriales sobre el uso del enlace de modelos con formularios web Forms, consulte Enlace de modelos y formularios web.

Consulte también

Se aplica a