DataBinder.Eval Método

Definição

Usa reflexão para analisar e avaliar uma expressão de associação de dados em relação a um objeto em tempo de execução.

Sobrecargas

Nome Description
Eval(Object, String)

Avalia expressões de associação de dados em tempo de execução.

Eval(Object, String, String)

Avalia expressões de associação de dados em tempo de execução e formata o resultado como uma cadeia de caracteres.

Comentários

A partir do .NET Framework 4.5, você pode usar a associação de modelos para simplificar algumas das tarefas que você teve que executar por meio da associação de dados em versões anteriores. Para obter uma série de tutoriais sobre como usar a associação de modelos com Web Forms, consulte Model Binding e Web Forms.

Eval(Object, String)

Avalia expressões de associaçã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 de objeto na qual a expressão é avaliada. Esse deve ser um identificador de objeto válido no idioma especificado da página.

expression
String

O caminho de navegação do container objeto para o valor da propriedade pública a ser colocado na propriedade de controle associado. Isso deve ser uma cadeia de caracteres de nomes de propriedade ou de campo separados por períodos, como Tables[0].DefaultView.[0].Price em C# ou Tables(0).DefaultView.(0).Price em Visual Basic.

Retornos

Uma Object instância resultante da avaliação da expressão de associação de dados.

Exceções

expression é null ou é uma cadeia de caracteres vazia após o corte.

Exemplos

Os exemplos a seguir mostram como usar o Eval método para associar dados ao Repeater controle. Ele requer uma classe de dados chamada 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

O arquivo code-behind carrega dados de teste e associa esses dados a um Repeater controle.

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 controle, use o Eval método para Container.DataItem 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 você pode chamar Eval a 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>

Comentários

O valor do expression parâmetro deve ser avaliado como uma propriedade pública.

Esse método é chamado automaticamente quando você cria associações de dados em um designer rad (desenvolvimento rápido de aplicativos), como Visual Studio. Você também pode usá-lo declarativamente para simplificar a conversão em uma cadeia de caracteres de texto. Para fazer isso, use a sintaxe de expressão <%# %>, conforme usado na associação de dados de ASP.NET padrão.

Esse método é particularmente útil ao associar dados a controles que estão em uma lista de modelos.

Note

Como esse método executa uma avaliação de associação tardia, usando reflexão em tempo de execução, ele pode fazer com que o desempenho seja visivelmente lento em comparação com a sintaxe padrão ASP.NET associação de dados.

Para qualquer um dos controles Web de lista, como GridView, DetailsView, DataListou Repeater, container deve ser Container.DataItem. Se você estiver se associando à página, container deverá ser Page.

A partir do .NET Framework 4.5, você pode usar a associação de modelos para simplificar algumas das tarefas que você teve que executar por meio da associação de dados em versões anteriores. Para obter uma série de tutoriais sobre como usar a associação de modelos com Web Forms, consulte Model Binding e Web Forms.

Confira também

Aplica-se a

Eval(Object, String, String)

Avalia expressões de associação de dados em tempo de execução e formata o resultado como uma cadeia de caracteres.

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 de objeto na qual a expressão é avaliada. Esse deve ser um identificador de objeto válido no idioma especificado da página.

expression
String

O caminho de navegação do container objeto para o valor da propriedade pública a ser colocado na propriedade de controle associado. Isso deve ser uma cadeia de caracteres de nomes de propriedade ou de campo 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 caracteres de formato .NET Framework (como as usadas por Format(String, Object)) que converte a instância de Object retornada pela expressão de associação de dados em um objeto String.

Retornos

Um String objeto que resulta da avaliação da expressão de associação de dados e da conversão em um tipo de cadeia de caracteres.

Exemplos

Os exemplos a seguir mostram como usar o Eval método para associar dados ao Repeater controle. Ele requer uma classe de dados chamada 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

O arquivo code-behind carrega dados de teste e associa esses dados a um Repeater controle.

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 controle, use o Eval método para Container.DataItem 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 você pode chamar Eval a 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>

Comentários

O valor de expression deve ser avaliado como uma propriedade pública.

Para obter mais informações sobre como formatar cadeias de caracteres no .NET Framework, consulte Formatting Types.

Esse método é chamado automaticamente quando você cria associações de dados em um designer rad (desenvolvimento rápido de aplicativos), como Visual Studio. Você também pode usá-lo declarativamente para converter o Object resultado da expressão de associação de dados em um String. Para usar o método declarativamente, use a sintaxe de expressão <%# %>, conforme usado na associação de dados de ASP.NET padrão.

Esse método é particularmente útil ao associar dados a controles que estão em uma lista de modelos.

Note

Como esse método executa uma avaliação de associação tardia, usando reflexão em tempo de execução, ele pode fazer com que o desempenho seja visivelmente lento em comparação com a sintaxe padrão ASP.NET associação de dados. Use esse método de forma criteriosa, especialmente quando a formatação de cadeia de caracteres não for necessária.

Para qualquer um dos controles Web de lista, como GridView, DetailsView, DataListou Repeater, container deve ser Container.DataItem. Se você estiver se associando à página, container deverá ser Page.

A partir do .NET Framework 4.5, você pode usar a associação de modelos para simplificar algumas das tarefas que você teve que executar por meio da associação de dados em versões anteriores. Para obter uma série de tutoriais sobre como usar a associação de modelos com Web Forms, consulte Model Binding e Web Forms.

Confira também

Aplica-se a