DataBinder.Eval Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.