DataBinder.Eval Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Používá reflexi k analýze a vyhodnocení výrazu datové vazby vůči objektu za běhu.
Přetížení
Eval(Object, String) |
Vyhodnocuje výrazy vazby dat za běhu. |
Eval(Object, String, String) |
Vyhodnocuje výrazy datové vazby za běhu a formátuje výsledek jako řetězec. |
Poznámky
Počínaje rozhraním .NET Framework 4.5 můžete pomocí vazby modelu zjednodušit některé úlohy, které jste museli provést prostřednictvím datové vazby v dřívějších verzích. Sérii kurzů o použití vazby modelu s Web Forms najdete v tématu Vazby modelu a Web Forms.
Eval(Object, String)
Vyhodnocuje výrazy vazby dat za běhu.
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
Odkaz na objekt, proti kterému je výraz vyhodnocen. Toto musí být platný identifikátor objektu v zadaném jazyce stránky.
- expression
- String
Navigační cesta z objektu container
k hodnotě veřejné vlastnosti, která má být umístěna ve vlastnosti vázaného ovládacího prvku. Musí se jednat o řetězec názvů vlastností nebo polí oddělených tečkami, například Tables[0].DefaultView.[0].Price
v jazyce C# nebo Tables(0).DefaultView.(0).Price
v jazyce Visual Basic.
Návraty
Instance Object , která je výsledkem vyhodnocení výrazu datové vazby.
Výjimky
expression
je null
nebo je prázdný řetězec po oříznutí.
Příklady
Následující příklady ukazují, jak pomocí Eval
metody svázat data s Repeater řízením. Vyžaduje datovou třídu s názvem 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
Soubor kódu na pozadí načte testovací data a sváže tato data s ovládacím Repeater prvku.
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
V deklarativní syntaxi Repeater ovládacího prvku použijete pro parametr metodu Evalcontainer
sContainer.DataItem
.
<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>
Nebo můžete volat Eval
funkci a nezahrnovat container
parametr.
<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>
Poznámky
Hodnota parametru se expression
musí vyhodnotit jako veřejná vlastnost.
Tato metoda se automaticky volá při vytváření datových vazeb v návrháři rychlého vývoje aplikací (RAD), jako je visual Studio. Můžete ho také použít deklarativně ke zjednodušení přetypování na textový řetězec. K tomu použijete syntaxi výrazu <%# %>
, která se používá ve standardní ASP.NET datové vazbě.
Tato metoda je zvlášť užitečná při vytváření vazeb dat s ovládacími prvky, které jsou v seznamu s šablonou.
Poznámka
Vzhledem k tomu, že tato metoda provádí opožděné vyhodnocení pomocí reflexe za běhu, může způsobit výrazně zpomalení výkonu ve srovnání se standardní syntaxí ASP.NET datové vazby.
Pro libovolný seznam webových ovládacích prvků, například GridView, DetailsView, DataListnebo Repeater, container
by měl být Container.DataItem
. Pokud vytváříte vazbu na stránku, container
měla by být Page
.
Počínaje rozhraním .NET Framework 4.5 můžete pomocí vazby modelu zjednodušit některé úlohy, které jste museli provést prostřednictvím datové vazby v dřívějších verzích. Sérii kurzů o použití vazby modelu s Web Forms najdete v tématu Vazby modelu a Web Forms.
Viz také
Platí pro
Eval(Object, String, String)
Vyhodnocuje výrazy datové vazby za běhu a formátuje výsledek jako řetězec.
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
Odkaz na objekt, proti kterému je výraz vyhodnocen. Toto musí být platný identifikátor objektu v zadaném jazyce stránky.
- expression
- String
Navigační cesta z objektu container
k hodnotě veřejné vlastnosti, která má být umístěna ve vlastnosti vázaného ovládacího prvku. Musí se jednat o řetězec názvů vlastností nebo polí oddělených tečkami, například Tables[0].DefaultView.[0].Price
v jazyce C# nebo Tables(0).DefaultView.(0).Price
v jazyce Visual Basic.
- format
- String
Řetězec formátu rozhraní .NET Framework (jako ty, které používá Format(String, Object)), který převede instanci vrácenou výrazem datové vazby Object na String objekt.
Návraty
Objekt String , který je výsledkem vyhodnocení výrazu datové vazby a jeho převodu na typ řetězce.
Příklady
Následující příklady ukazují, jak pomocí Eval
metody svázat data s Repeater řízením. Vyžaduje datovou třídu s názvem 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
Soubor kódu na pozadí načte testovací data a sváže tato data s ovládacím Repeater prvku.
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
V deklarativní syntaxi Repeater ovládacího prvku použijete pro parametr metodu Evalcontainer
sContainer.DataItem
.
<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>
Nebo můžete volat Eval
funkci a nezahrnovat container
parametr.
<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>
Poznámky
Hodnota expression
musí být vyhodnocena jako veřejná vlastnost.
Další informace o formátování řetězců v rozhraní .NET Framework naleznete v tématu Typy formátování.
Tato metoda se automaticky volá při vytváření datových vazeb v návrháři rychlého vývoje aplikací (RAD), jako je visual Studio. Můžete ho také použít deklarativně k převodu výsledku Object z výrazu datové vazby Stringna . Chcete-li použít metodu deklarativní, použijte syntaxi výrazu <%# %>
, jak se používá ve standardní ASP.NET datové vazby.
Tato metoda je zvlášť užitečná při vytváření vazeb dat s ovládacími prvky, které jsou v seznamu s šablonou.
Poznámka
Vzhledem k tomu, že tato metoda provádí opožděné vyhodnocení pomocí reflexe za běhu, může způsobit výrazně zpomalení výkonu ve srovnání se standardní syntaxí ASP.NET datové vazby. Tuto metodu používejte uvážlivě, zejména pokud není vyžadováno formátování řetězců.
Pro libovolný seznam webových ovládacích prvků, například GridView, DetailsView, DataListnebo Repeater, container
by měl být Container.DataItem
. Pokud vytváříte vazbu na stránku, container
měla by být Page
.
Počínaje rozhraním .NET Framework 4.5 můžete pomocí vazby modelu zjednodušit některé úlohy, které jste museli provést prostřednictvím datové vazby v dřívějších verzích. Sérii kurzů o použití vazby modelu s Web Forms najdete v tématu Vazby modelu a Web Forms.