Compartir a través de


DataBinder.Eval Método

Definición

Utiliza la reflexión para analizar y evaluar una expresión de enlace de datos con respecto a un objeto en tiempo de ejecución.

Sobrecargas

Eval(Object, String)

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

Eval(Object, String, String)

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

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 Web Forms, consulte Enlace de modelos y Web Forms.

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 respecto a la que se evalúa la expresión. Éste debe ser un identificador del objeto válido en el lenguaje especificado de la página.

expression
String

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

Devoluciones

Object

Una instancia de Object resultante de la evaluación de la expresión de enlace de datos.

Excepciones

El valor de expression es null o una cadena vacía después de recortar.

Ejemplos

En los ejemplos siguientes se muestra cómo usar el Eval método para enlazar datos para Repeater controlar. 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 estándar ASP.NET.

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

Nota

Dado que este método realiza la 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 estándar ASP.NET enlace de datos.

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 Web Forms, consulte Enlace de modelos y Web Forms.

Consulte también

Se aplica a

Eval(Object, String, String)

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

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 respecto a la que se evalúa la expresión. Éste debe ser un identificador del objeto válido en el lenguaje especificado de la página.

expression
String

Ruta de acceso de navegación desde el objeto container hasta el valor de propiedad pública que se va a situar en la propiedad de control enlazado. Debe ser una cadena de nombres de campo o de 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 de .NET Framework (como las utilizadas por Format(String, Object)) que convierte la instancia de Object devuelta por la expresión de enlace de datos en un objeto String.

Devoluciones

String

Un objeto String que resulta de evaluar la expresión de enlace de datos y convertirla a un tipo String.

Ejemplos

En los ejemplos siguientes se muestra cómo usar el Eval método para enlazar datos para Repeater controlar. 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 la .NET Framework, vea Aplicar formato a tipos.

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 de forma declarativa 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 estándar ASP.NET.

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

Nota

Dado que este método realiza la 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 estándar ASP.NET enlace de datos. 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 Web Forms, consulte Enlace de modelos y Web Forms.

Consulte también

Se aplica a