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