DataBinder.Eval Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Utiliza reflexão para analisar e avaliar uma expressão de ligação de dados contra um objeto em tempo de execução.
Sobrecargas
| Name | Description |
|---|---|
| Eval(Object, String) |
Avalia expressões de ligação de dados em tempo de execução. |
| Eval(Object, String, String) |
Avalia expressões de ligação de dados em tempo de execução e formata o resultado como uma cadeia. |
Observações
A partir do .NET Framework 4.5, podes usar a ligação de modelos para simplificar algumas das tarefas que tinhas de realizar através da ligação de dados em versões anteriores. Para uma série de tutoriais sobre a utilização de encadernação de modelos com Web Forms, veja Encadernação de Modelos e Web Formulários.
Eval(Object, String)
Avalia expressões de ligação de dados em tempo de execução.
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
A referência do objeto contra a qual a expressão é avaliada. Este deve ser um identificador de objeto válido na linguagem especificada da página.
- expression
- String
O percurso de navegação do container objeto para o valor da propriedade pública deve ser colocado na propriedade de controlo limitada. Isto deve ser uma cadeia de nomes de propriedades ou campos separados por períodos, como Tables[0].DefaultView.[0].Price em C# ou Tables(0).DefaultView.(0).Price em Visual Basic.
Devoluções
Uma Object instância que resulta da avaliação da expressão de ligação de dados.
Exceções
expression é null ou é um fio vazio após aparar.
Exemplos
Os exemplos seguintes mostram como usar o Eval método para vincular dados ao Repeater controlo. Requer uma classe de dados chamada Produto.
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
O ficheiro code-behind carrega dados de teste e liga esses dados a um Repeater controlo.
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
Na sintaxe declarativa do Repeater controlo, utiliza-se o Eval método com Container.DataItem para o 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>
Ou, podes chamar Eval função e não incluir o 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>
Observações
O valor do expression parâmetro deve ser avaliado para uma propriedade pública.
Este método é automaticamente chamado quando se criam ligações de dados num designer de desenvolvimento rápido de aplicações (RAD), como o Visual Studio. Também podes usá-lo de forma declarativa para simplificar o casting para uma cadeia de texto. Para isso, utiliza-se a sintaxe de expressão <%# %>, tal como é usada na ligação de dados ASP.NET padrão.
Este método é particularmente útil ao ligar dados a controlos que estão numa lista templateada.
Note
Como este método realiza uma avaliação de limite tardio, usando reflexão em tempo de execução, pode causar um desempenho visivelmente lento em comparação com a sintaxe padrão de ligação de dados ASP.NET.
Para qualquer uma das listas, os controlos Web, como GridView, DetailsView, DataList, ou Repeater, container devem ser Container.DataItem. Se estiver encadernado contra a página, container deve ser Page.
A partir do .NET Framework 4.5, podes usar a ligação de modelos para simplificar algumas das tarefas que tinhas de realizar através da ligação de dados em versões anteriores. Para uma série de tutoriais sobre a utilização de encadernação de modelos com Web Forms, veja Encadernação de Modelos e Web Formulários.
Ver também
Aplica-se a
Eval(Object, String, String)
Avalia expressões de ligação de dados em tempo de execução e formata o resultado como uma cadeia.
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
A referência do objeto contra a qual a expressão é avaliada. Este deve ser um identificador de objeto válido na linguagem especificada da página.
- expression
- String
O percurso de navegação do container objeto para o valor da propriedade pública deve ser colocado na propriedade de controlo limitada. Isto deve ser uma cadeia de nomes de propriedades ou campos separados por períodos, como Tables[0].DefaultView.[0].Price em C# ou Tables(0).DefaultView.(0).Price em Visual Basic.
- format
- String
Uma cadeia de formato .NET Framework (semelhante às usadas por Format(String, Object)) que converte a instância Object devolvida pela expressão de ligação de dados num objeto String.
Devoluções
Um String objeto que resulta da avaliação da expressão de ligação de dados e da sua conversão para um tipo de cadeia.
Exemplos
Os exemplos seguintes mostram como usar o Eval método para vincular dados ao Repeater controlo. Requer uma classe de dados chamada Produto.
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
O ficheiro code-behind carrega dados de teste e liga esses dados a um Repeater controlo.
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
Na sintaxe declarativa do Repeater controlo, utiliza-se o Eval método com Container.DataItem para o 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>
Ou, podes chamar Eval função e não incluir o 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>
Observações
O valor de expression deve ser avaliado para um bem público.
Para mais informações sobre cadeias de formatos no .NET Framework, consulte Formatting Types.
Este método é automaticamente chamado quando se criam ligações de dados num designer de desenvolvimento rápido de aplicações (RAD), como o Visual Studio. Também pode usá-lo declarativamente para converter o Object resultado da expressão de ligação de dados para um String. Para usar o método de forma declarativa, utilize a sintaxe de expressão <%# %>, tal como é usada na ligação de dados ASP.NET padrão.
Este método é particularmente útil ao ligar dados a controlos que estão numa lista templateada.
Note
Como este método realiza uma avaliação de limite tardio, usando reflexão em tempo de execução, pode causar um desempenho visivelmente lento em comparação com a sintaxe padrão de ligação de dados ASP.NET. Use este método com criterio, especialmente quando não é necessário formatar strings.
Para qualquer uma das listas, os controlos Web, como GridView, DetailsView, DataList, ou Repeater, container devem ser Container.DataItem. Se estiver encadernado contra a página, container deve ser Page.
A partir do .NET Framework 4.5, podes usar a ligação de modelos para simplificar algumas das tarefas que tinhas de realizar através da ligação de dados em versões anteriores. Para uma série de tutoriais sobre a utilização de encadernação de modelos com Web Forms, veja Encadernação de Modelos e Web Formulários.