DataBinder.Eval Metoda

Definicja

Używa odbicia do analizowania i oceniania wyrażenia powiązania danych względem obiektu w czasie wykonywania.

Przeciążenia

Nazwa Opis
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 platformy .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 formularzami internetowymi, zobacz Powiązania modelu i formularze sieci Web.

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 obliczane jest 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 Tables[0].DefaultView.[0].Price w języku C# lub Tables(0).DefaultView.(0).Price w Visual Basic.

Zwraca

Object Wystąpienie, 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 za pomocą Eval metody powiązać dane 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 w tle ładuje dane testowe i wiąże te dane 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żesz też wywołać Eval funkcję i nie dołączyć 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), takiego 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 <%# %>, 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.

Note

Ponieważ ta metoda wykonuje ocenę z opóźnieniem, używając odbicia w czasie wykonywania, może to spowodować znaczne spowolnienie wydajności w porównaniu ze standardową składnią powiązania danych ASP.NET.

Dla dowolnej listy kontrolek sieci Web, takich jak GridView, , DetailsViewDataListlub Repeater, container powinien mieć wartość Container.DataItem. W przypadku powiązania ze stroną container powinna mieć wartość Page.

Począwszy od platformy .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 formularzami internetowymi, zobacz Powiązania modelu i formularze sieci Web.

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 obliczane jest 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 Tables[0].DefaultView.[0].Price w języku C# lub Tables(0).DefaultView.(0).Price w Visual Basic.

format
String

Ciąg formatu platformy .NET (na przykład używany przez Format(String, Object)), który konwertuje wystąpienie Object zwracane przez wyrażenie powiązania danych do obiektu String.

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 za pomocą Eval metody powiązać dane 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 w tle ładuje dane testowe i wiąże te dane 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żesz też wywołać Eval funkcję i nie dołączyć 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 być obliczana expression dla właściwości publicznej.

Aby uzyskać więcej informacji na temat ciągów formatu w programie .NET Framework, zobacz Formatting Types.

Ta metoda jest wywoływana automatycznie podczas tworzenia powiązań danych w projektancie szybkiego tworzenia aplikacji (RAD), takiego jak Visual Studio. Można również użyć go deklaratywnie, aby przekonwertować Object wynikowy z wyrażenia powiązania danych na Stringwartość . Aby użyć metody deklaratywnej, użyj składni wyrażenia <%# %>, jak użyto 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.

Note

Ponieważ ta metoda wykonuje ocenę z opóźnieniem, używając odbicia w czasie wykonywania, może to spowodować znaczne 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ągów nie jest wymagane.

Dla dowolnej listy kontrolek sieci Web, takich jak GridView, , DetailsViewDataListlub Repeater, container powinien mieć wartość Container.DataItem. W przypadku powiązania ze stroną container powinna mieć wartość Page.

Począwszy od platformy .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 formularzami internetowymi, zobacz Powiązania modelu i formularze sieci Web.

Zobacz też

Dotyczy