DataBinder.Eval Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Używa odbicia do analizowania i oceniania wyrażenia powiązania danych względem obiektu w czasie wykonywania.
Przeciążenia
Eval(Object, String) |
Oblicza wyrażenia powiązania danych w czasie wykonywania. |
Eval(Object, String, String) |
Oblicza wyrażenia powiązania danych w czasie wykonywania i formatuje wynik jako ciąg. |
Uwagi
Począwszy od .NET Framework 4.5, można użyć powiązania modelu, aby uprościć niektóre zadania, które trzeba było wykonać za pomocą powiązania danych we wcześniejszych wersjach. Aby zapoznać się z serią samouczków dotyczącą używania powiązania modelu z Web Forms, zobacz Powiązanie modelu i Web Forms.
Eval(Object, String)
Oblicza wyrażenia powiązania danych w czasie wykonywania.
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
Parametry
- container
- Object
Odwołanie do obiektu, względem którego jest obliczane wyrażenie. Musi to być prawidłowy identyfikator obiektu w określonym języku strony.
- expression
- String
Ścieżka nawigacji z container
obiektu do wartości właściwości publicznej, która ma zostać umieszczona we właściwości powiązanej kontrolki. Musi to być ciąg nazw właściwości lub pól rozdzielonych kropkami, takimi jak Tabele[0]. Defaultview. [0]. Cena
w języku C# lub tabelach (0). Defaultview. (0). Cena
w Visual Basic.
Zwraca
Wystąpienie Object , które wynika z oceny wyrażenia powiązania danych.
Wyjątki
expression
jest null
ciągiem pustym po przycinaniu.
Przykłady
W poniższych przykładach pokazano, jak używać Eval
metody do powiązania danych z Repeater kontrolką. Wymaga klasy danych o nazwie 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
Plik związany z kodem ładuje dane testowe i wiąże je z kontrolką Repeater .
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
W składni deklaratywnej dla kontrolki Repeater należy użyć Eval metody z Container.DataItem
parametrem container
.
<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>
Można też wywołać Eval
funkcję i nie uwzględnić parametru container
.
<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>
Uwagi
Wartość parametru expression
musi zostać obliczona na właściwość publiczną.
Ta metoda jest wywoływana automatycznie podczas tworzenia powiązań danych w projektancie szybkiego tworzenia aplikacji (RAD), takim jak Visual Studio. Można go również użyć deklaratywnie, aby uprościć rzutowanie do ciągu tekstowego. W tym celu należy użyć składni wyrażenia używanej w standardowym powiązaniu <%# %>
danych ASP.NET.
Ta metoda jest szczególnie przydatna w przypadku powiązania danych z kontrolkami, które znajdują się na liście szablonów.
Uwaga
Ponieważ ta metoda wykonuje ocenę z opóźnieniem, użycie odbicia w czasie wykonywania może spowodować spowolnienie wydajności w porównaniu ze standardową składnią powiązania danych ASP.NET.
Dla dowolnej listy kontrolek sieci Web, takich jak GridView, DetailsView, DataListlub Repeater, container
powinna mieć wartość Container.DataItem
. Jeśli tworzysz powiązanie ze stroną, container
powinna mieć wartość Page
.
Począwszy od .NET Framework 4.5, można użyć powiązania modelu, aby uprościć niektóre zadania, które trzeba było wykonać za pomocą powiązania danych we wcześniejszych wersjach. Aby zapoznać się z serią samouczków dotyczącą używania powiązania modelu z Web Forms, zobacz Powiązanie modelu i Web Forms.
Zobacz też
Dotyczy
Eval(Object, String, String)
Oblicza wyrażenia powiązania danych w czasie wykonywania i formatuje wynik jako ciąg.
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
Parametry
- container
- Object
Odwołanie do obiektu, względem którego jest obliczane wyrażenie. Musi to być prawidłowy identyfikator obiektu w określonym języku strony.
- expression
- String
Ścieżka nawigacji z container
obiektu do wartości właściwości publicznej, która ma zostać umieszczona we właściwości powiązanej kontrolki. Musi to być ciąg nazw właściwości lub pól rozdzielonych kropkami, takimi jak Tabele[0]. Defaultview. [0]. Cena
w języku C# lub tabelach (0). Defaultview. (0). Cena
w Visual Basic.
- format
- String
Ciąg formatu .NET Framework (na przykład używany przez Format(String, Object)program ), który konwertuje wystąpienie zwrócone Object przez wyrażenie powiązania danych na String obiekt.
Zwraca
String Obiekt, który wynika z obliczania wyrażenia powiązania danych i konwertowania go na typ ciągu.
Przykłady
W poniższych przykładach pokazano, jak używać Eval
metody do powiązania danych z Repeater kontrolką. Wymaga klasy danych o nazwie 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
Plik związany z kodem ładuje dane testowe i wiąże je z kontrolką Repeater .
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
W składni deklaratywnej dla kontrolki Repeater należy użyć Eval metody z Container.DataItem
parametrem container
.
<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>
Można też wywołać Eval
funkcję i nie uwzględnić parametru container
.
<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>
Uwagi
Wartość musi zostać obliczona expression
na właściwość publiczną.
Aby uzyskać więcej informacji na temat ciągów formatu w .NET Framework, zobacz Typy formatowania.
Ta metoda jest wywoływana automatycznie podczas tworzenia powiązań danych w projektancie szybkiego tworzenia aplikacji (RAD), takim jak Visual Studio. Można go również użyć deklaratywnie, aby przekonwertować Object wynikowy z wyrażenia powiązania danych na wartość String. Aby deklaratywnie użyć metody , użyj <%# %>
składni wyrażenia, która jest używana w standardowym powiązaniu danych ASP.NET.
Ta metoda jest szczególnie przydatna w przypadku powiązania danych z kontrolkami, które znajdują się na liście szablonów.
Uwaga
Ponieważ ta metoda wykonuje ocenę z opóźnieniem, użycie odbicia w czasie wykonywania może spowodować spowolnienie wydajności w porównaniu ze standardową składnią powiązania danych ASP.NET. Tej metody należy używać rozsądnie, szczególnie gdy formatowanie ciągu nie jest wymagane.
Dla dowolnej listy kontrolek sieci Web, takich jak GridView, DetailsView, DataListlub Repeater, container
powinna mieć wartość Container.DataItem
. Jeśli tworzysz powiązanie ze stroną, container
powinna mieć wartość Page
.
Począwszy od .NET Framework 4.5, można użyć powiązania modelu, aby uprościć niektóre zadania, które trzeba było wykonać za pomocą powiązania danych we wcześniejszych wersjach. Aby zapoznać się z serią samouczków dotyczącą używania powiązania modelu z Web Forms, zobacz Powiązanie modelu i Web Forms.