DataBinder.Eval Método

Definição

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

Sobrecargas

Eval(Object, String)

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

Eval(Object, String, String)

Avalia as 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 model binding 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 modelo com Web Forms, consulte Model Binding e Web Forms.

Eval(Object, String)

Avalia as 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. Este valor deve ser um identificador de objeto válido no idioma especificado da página.

expression
String

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

Retornos

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

Exceções

expression é null ou é uma cadeia de caracteres vazia após a filtragem.

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

Observação

Como esse método executa a 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 de associação de dados padrão ASP.NET.

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

A partir do .NET Framework 4.5, você pode usar a model binding 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 modelo com Web Forms, consulte Model Binding e Web Forms.

Confira também

Aplica-se a

Eval(Object, String, String)

Avalia as 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. Este valor deve ser um identificador de objeto válido no idioma especificado da página.

expression
String

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

format
String

Uma cadeia de caracteres de formato do .NET Framework (como aquelas usadas pelo Format(String, Object)) que converte a instância Object retornada pela expressão de associação de dados em um objeto String.

Retornos

Um objeto String que resulta da avaliação da expressão de associação de dados e a converte 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 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 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 cadeias de caracteres de formato no .NET Framework, consulte Tipos de formatação.

Esse método é chamado automaticamente quando você cria associações de dados em um designer RAD (desenvolvimento rápido de aplicativos), como o Visual Studio. Você também pode usá-lo declarativamente para converter o Object resultante 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.

Observação

Como esse método executa a 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 de associação de dados padrão ASP.NET. Use esse método criteriosamente, especialmente quando a formatação de cadeia de caracteres não for necessária.

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

A partir do .NET Framework 4.5, você pode usar a model binding 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 modelo com Web Forms, consulte Model Binding e Web Forms.

Confira também

Aplica-se a