Udostępnij za pośrednictwem


DataBinder.Eval Metoda

Definicja

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

Object

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

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.

Zobacz też

Dotyczy