Condividi tramite


DataBinder.Eval Metodo

Definizione

Utilizza la funzionalità di reflection per analizzare e valutare un'espressione di associazione dati per un oggetto in fase di esecuzione.

Overload

Eval(Object, String)

Valuta le espressioni di associazione dati in fase di esecuzione.

Eval(Object, String, String)

Valuta le espressioni di associazione dati in fase di esecuzione e formatta il risultato come stringa.

Commenti

A partire da .NET Framework 4.5, è possibile usare l'associazione di modelli per semplificare alcune delle attività da eseguire tramite il data binding nelle versioni precedenti. Per una serie di esercitazioni sull'uso dell'associazione di modelli con Web Forms, vedere Associazione di modelli e Web Forms.

Eval(Object, String)

Valuta le espressioni di associazione dati in fase di esecuzione.

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

Parametri

container
Object

Riferimento all'oggetto rispetto al quale viene valutata l'espressione. Deve essere un identificatore oggetto valido nel linguaggio specificato della pagina.

expression
String

Percorso di navigazione dall'oggetto container al valore della proprietà pubblica da inserire nella proprietà del controllo associato. Deve trattarsi di una stringa di nomi di proprietà o di campi separati da punti, ad esempio Tables[0].DefaultView.[0].Price in C# o Tables(0).DefaultView.(0).Price in Visual Basic.

Restituisce

Un'istanza Object che risulta dalla valutazione dell'espressione di associazione dati.

Eccezioni

expression è null o è una stringa vuota dopo l'operazione di taglio.

Esempio

Negli esempi seguenti viene illustrato come utilizzare il Eval metodo per associare i dati al Repeater controllo. Richiede una classe di dati denominata 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

Il file code-behind carica i dati di test e associa tali dati a un Repeater controllo .

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

Nella sintassi dichiarativa per il Repeater controllo si usa il Eval metodo con Container.DataItem per il container parametro .

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

In alternativa, è possibile chiamare Eval la funzione e non includere il container parametro .

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

Commenti

Il valore del expression parametro deve restituire una proprietà pubblica.

Questo metodo viene chiamato automaticamente quando si creano data binding in una finestra di progettazione rapida dello sviluppo di applicazioni (RAD), ad esempio Visual Studio. È anche possibile usarlo in modo dichiarativo per semplificare il cast in una stringa di testo. A tale scopo, usare la sintassi delle <%# %> espressioni, come usato nel data binding standard ASP.NET.

Questo metodo è particolarmente utile quando si associano dati a controlli inclusi in un elenco basato su modelli.

Nota

Poiché questo metodo esegue una valutazione con associazione tardiva, usando la reflection in fase di esecuzione, può causare un rallentamento notevole delle prestazioni rispetto alla sintassi di associazione dati ASP.NET standard.

Per qualsiasi controllo Web dell'elenco, ad esempio GridView, DetailsView, DataListo Repeater, container deve essere Container.DataItem. Se si esegue l'associazione alla pagina, container deve essere Page.

A partire da .NET Framework 4.5, è possibile usare l'associazione di modelli per semplificare alcune delle attività da eseguire tramite il data binding nelle versioni precedenti. Per una serie di esercitazioni sull'uso dell'associazione di modelli con Web Forms, vedere Associazione di modelli e Web Forms.

Vedi anche

Si applica a

Eval(Object, String, String)

Valuta le espressioni di associazione dati in fase di esecuzione e formatta il risultato come stringa.

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

Parametri

container
Object

Riferimento all'oggetto rispetto al quale viene valutata l'espressione. Deve essere un identificatore oggetto valido nel linguaggio specificato della pagina.

expression
String

Percorso di navigazione dall'oggetto container al valore della proprietà pubblica da inserire nella proprietà del controllo associato. Deve trattarsi di una stringa di nomi di proprietà o di campi separati da punti, ad esempio Tables[0].DefaultView.[0].Price in C# o Tables(0).DefaultView.(0).Price in Visual Basic.

format
String

Una stringa di formato .NET Framework, simile a quelle utilizzate da Format(String, Object), che converte l'istanza Object restituita dall'espressione di associazione dati in un oggetto String.

Restituisce

Un oggetto String che risulta dalla valutazione dell'espressione di associazione dati e dalla conversione in un tipo stringa.

Esempio

Negli esempi seguenti viene illustrato come utilizzare il Eval metodo per associare i dati al Repeater controllo. Richiede una classe di dati denominata 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

Il file code-behind carica i dati di test e associa tali dati a un Repeater controllo .

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

Nella sintassi dichiarativa per il Repeater controllo si usa il Eval metodo con Container.DataItem per il container parametro .

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

In alternativa, è possibile chiamare Eval la funzione e non includere il container parametro .

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

Commenti

Il valore di expression deve restituire una proprietà pubblica.

Per altre informazioni sulle stringhe di formato in .NET Framework, vedere Formattazione dei tipi.

Questo metodo viene chiamato automaticamente quando si creano data binding in una finestra di progettazione rapida dello sviluppo di applicazioni (RAD), ad esempio Visual Studio. È anche possibile usarlo in modo dichiarativo per convertire l'oggetto Object risultante dall'espressione di associazione dati in un oggetto String. Per usare il metodo in modo dichiarativo, usare la sintassi dell'espressione <%# %> , come usato nel data binding standard ASP.NET.

Questo metodo è particolarmente utile quando si associano dati a controlli inclusi in un elenco basato su modelli.

Nota

Poiché questo metodo esegue una valutazione con associazione tardiva, usando la reflection in fase di esecuzione, può causare un rallentamento notevole delle prestazioni rispetto alla sintassi di associazione dati ASP.NET standard. Usare questo metodo in modo corretto, in particolare quando la formattazione delle stringhe non è necessaria.

Per qualsiasi controllo Web dell'elenco, ad esempio GridView, DetailsView, DataListo Repeater, container deve essere Container.DataItem. Se si esegue l'associazione alla pagina, container deve essere Page.

A partire da .NET Framework 4.5, è possibile usare l'associazione di modelli per semplificare alcune delle attività da eseguire tramite il data binding nelle versioni precedenti. Per una serie di esercitazioni sull'uso dell'associazione di modelli con Web Forms, vedere Associazione di modelli e Web Forms.

Vedi anche

Si applica a