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 vazby dat proti objektu za běhu.
Přetížení
| Name | Description |
|---|---|
| Eval(Object, String) |
Vyhodnotí výrazy vazby dat za běhu. |
| Eval(Object, String, String) |
Vyhodnotí výrazy vazby dat za běhu a naformátuje výsledek jako řetězec. |
Poznámky
Počínaje .NET Framework 4.5 můžete pomocí vazby modelu zjednodušit některé úlohy, které jste museli provádět prostřednictvím datové vazby v dřívějších verzích. Série kurzů o použití vazby modelu s webovými formuláři najdete v tématu Vazby modelu a webové formuláře.
Eval(Object, String)
Vyhodnotí 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, na který je výraz vyhodnocen. Musí to 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á se má umístit do vázané vlastnosti ovládacího prvku. Musí to být ř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 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 použít metodu Eval k vytvoření vazby dat k Repeater řízení. 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čte testovací data a vytvoří vazbu dat na Repeater ovládací prvek.
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 metodu Eval s 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>
Nebo můžete volat Eval funkci a nezahrnovat parametr 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>
Poznámky
Hodnota parametru expression musí být vyhodnocena 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ím způsobem ke zjednodušení přetypování na textový řetězec. K tomu použijete syntaxi výrazu <%# %>, jak se používá ve standardní ASP.NET datové vazbě.
Tato metoda je obzvláště užitečná při vazbě dat k ovládacím prvkům, které jsou v seznamu šablon.
Note
Vzhledem k tomu, že tato metoda provádí opožděné vyhodnocení pomocí reflexe za běhu, může způsobit, že výkon bude výrazně pomalý v porovnání se standardní syntaxí datových vazeb ASP.NET.
Pro některý z webových ovládacích prvků seznamu, 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 .NET Framework 4.5 můžete pomocí vazby modelu zjednodušit některé úlohy, které jste museli provádět prostřednictvím datové vazby v dřívějších verzích. Série kurzů o použití vazby modelu s webovými formuláři najdete v tématu Vazby modelu a webové formuláře.
Viz také
Platí pro
Eval(Object, String, String)
Vyhodnotí výrazy vazby dat za běhu a naformá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, na který je výraz vyhodnocen. Musí to 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á se má umístit do vázané vlastnosti ovládacího prvku. Musí to být ř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 Visual Basic.
- format
- String
Formátovací řetězec rozhraní .NET Framework (například řetězce používané Format(String, Object)), který převede instanci Object vrácenou výrazem datové vazby na objekt String.
Návraty
Objekt String , který je výsledkem vyhodnocení výrazu datové vazby a jeho převod na typ řetězce.
Příklady
Následující příklady ukazují, jak použít metodu Eval k vytvoření vazby dat k Repeater řízení. 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čte testovací data a vytvoří vazbu dat na Repeater ovládací prvek.
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 metodu Eval s 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>
Nebo můžete volat Eval funkci a nezahrnovat parametr 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>
Poznámky
Hodnota expression musí být vyhodnocena jako veřejná vlastnost.
Další informace o formátovací řetězce v .NET Framework naleznete v tématu Formatting Types.
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 jej také použít deklarativní převod Object výsledku z výrazu datové vazby na String. Pokud chcete metodu použít deklarativní, použijte syntaxi výrazu <%# %>, jak se používá ve standardní ASP.NET datové vazbě.
Tato metoda je obzvláště užitečná při vazbě dat k ovládacím prvkům, které jsou v seznamu šablon.
Note
Vzhledem k tomu, že tato metoda provádí opožděné vyhodnocení pomocí reflexe za běhu, může způsobit, že výkon bude výrazně pomalý v porovnání se standardní syntaxí datových vazeb ASP.NET. Tuto metodu používejte uvážlivě, zejména pokud není vyžadováno formátování řetězců.
Pro některý z webových ovládacích prvků seznamu, 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 .NET Framework 4.5 můžete pomocí vazby modelu zjednodušit některé úlohy, které jste museli provádět prostřednictvím datové vazby v dřívějších verzích. Série kurzů o použití vazby modelu s webovými formuláři najdete v tématu Vazby modelu a webové formuláře.