DataBinder.Eval Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.