Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo DataBinder.Eval (Object, String)

 

Data di pubblicazione: ottobre 2016

Valuta le espressioni di associazione dati in fase di esecuzione.

Spazio dei nomi:   System.Web.UI
Assembly:  System.Web (in System.Web.dll)

public static object Eval(
	object container,
	string expression
)

Parametri

container
Type: System.Object

Il riferimento all'oggetto sul quale viene valutata l'espressione. Deve trattarsi di un identificatore di oggetto valido nel linguaggio specificato della pagina.

expression
Type: System.String

Il percorso di navigazione dal container oggetto per il valore della proprietà pubblica da inserire nella proprietà del controllo associato. Deve essere una stringa di nomi di proprietà o campi separati da punti, ad esempio Tables[0].DefaultView.[0].Price in c# o Tables(0).DefaultView.(0).Price in Visual Basic.

Valore restituito

Type: System.Object

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

Exception Condition
ArgumentNullException

expression è null o è una stringa vuota dopo la rimozione.

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

Questo metodo viene chiamato automaticamente quando si creano associazioni dati in una finestra di progettazione (RAD) sviluppo rapido di applicazioni, ad esempio Visual Studio. È inoltre possibile utilizzarlo in modo dichiarativo per semplificare il cast su una stringa di testo. A tale scopo, utilizzare il <%#  %> sintassi di espressione, come nell'associazione dati ASP.NET standard.

Questo metodo è particolarmente utile quando si associano dati ai controlli presenti in un elenco di modelli.

System_CAPS_noteNota

Poiché questo metodo esegue una valutazione ad associazione tardiva, tramite la reflection in fase di esecuzione, può causare delle prestazioni notevolmente rallentate rispetto alla sintassi di associazione dati ASP.NET standard.

Per qualsiasi dell'elenco di controlli Web, ad esempio GridView, DetailsView, DataList, o Repeater, container deve essere Container.DataItem. Se l'associazione viene eseguita la pagina container deve essere Page.

A partire da .NET Framework 4.5, è possibile utilizzare associazione di modelli per semplificare le operazioni che è necessario eseguire tramite l'associazione dati nelle versioni precedenti. Per una serie di esercitazioni sull'utilizzo di associazione del modello in Web Form, vedere Model Binding and Web Forms.

Nell'esempio seguente viene illustrato come utilizzare il Eval metodo per l'associazione dati 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; }
}

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();
    }
}

Nella sintassi dichiarativa per il Repeater controllo, utilizzare 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>

Oppure, è possibile chiamare Eval 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>

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: