DataBinder.Eval Methode

Definition

Verwendet Reflektion, um einen Datenbindungsausdruck für ein Objekt zur Laufzeit zu analysieren und auszuwerten.

Überlädt

Eval(Object, String)

Wertet Datenbindungsausdrücke zur Laufzeit aus

Eval(Object, String, String)

Wertet zur Laufzeit Datenbindungsausdrücke aus und formatiert das Ergebnis als Zeichenfolge

Hinweise

Ab .NET Framework 4.5 können Sie die Modellbindung verwenden, um einige der Aufgaben zu vereinfachen, die Sie durch Datenbindung in früheren Versionen ausführen mussten. Eine Lernprogrammreihe zur Verwendung der Modellbindung mit Web Forms finden Sie unter Model Binding and Web Forms.

Eval(Object, String)

Wertet Datenbindungsausdrücke zur Laufzeit aus

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

Parameter

container
Object

Der Objektverweis, für den der Ausdruck ausgewertet wird. Dabei muss es sich um einen gültigen Objektbezeichner in der angegebenen Sprache der Seite handeln.

expression
String

Der Pfad vom container-Objekt zum Wert der öffentlichen Eigenschaften, der in der Eigenschaft des gebundenen Steuerelements platziert werden soll. Dieser muss eine Zeichenfolge von Eigenschaften- oder Feldnamen sein, die durch Punkte voneinander getrennt sind, z.B. Tables[0].DefaultView.[0].Price in C# oder Tables(0).DefaultView.(0).Price in Visual Basic.

Gibt zurück

Object

Eine Object-Instanz, die bei der Auswertung des Datenbindungsausdrucks entsteht

Ausnahmen

expression ist null oder entspricht nach dem Verkürzen einer leeren Zeichenfolge.

Beispiele

In den folgenden Beispielen wird gezeigt, wie sie die Eval Methode zum Binden von Daten an Repeater das Steuerelement verwenden. Es erfordert eine Datenklasse namens "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

Die CodeBehind-Datei lädt Testdaten und bindet diese Daten an ein Repeater Steuerelement.

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

In der deklarativen Syntax für das Repeater Steuerelement verwenden Sie die Eval Methode Container.DataItem für den container Parameter.

<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>

Oder Sie können die Funktion aufrufen Eval und den container Parameter nicht einschließen.

<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>

Hinweise

Der Wert des expression Parameters muss für eine öffentliche Eigenschaft ausgewertet werden.

Diese Methode wird automatisch aufgerufen, wenn Sie Datenbindungen in einem schnellen Anwendungsentwicklungs-Designer (RAD) wie Visual Studio erstellen. Sie können es auch deklarativ verwenden, um die Umwandlung in eine Textzeichenfolge zu vereinfachen. Dazu verwenden Sie die <%# %> Ausdruckssyntax, wie in standard ASP.NET Datenbindung verwendet.

Diese Methode ist besonders nützlich, wenn Daten an Steuerelemente gebunden werden, die sich in einer vorlagenbasierten Liste befinden.

Hinweis

Da diese Methode verspätete Auswertungen durchführt, kann dies zur Laufzeit dazu führen, dass die Leistung im Vergleich zur standardmäßigen ASP.NET Datenbindungssyntax spürbar langsam ist.

Für alle Listenwebsteuerelemente, z GridView. B. , DetailsView, DataList, oder Repeater, container sollte Container.DataItemsein. Wenn Sie an die Seite gebunden sind, container sollte es sich um Page.

Ab .NET Framework 4.5 können Sie die Modellbindung verwenden, um einige der Aufgaben zu vereinfachen, die Sie durch Datenbindung in früheren Versionen ausführen mussten. Eine Lernprogrammreihe zur Verwendung der Modellbindung mit Web Forms finden Sie unter Model Binding and Web Forms.

Siehe auch

Gilt für:

Eval(Object, String, String)

Wertet zur Laufzeit Datenbindungsausdrücke aus und formatiert das Ergebnis als Zeichenfolge

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

Parameter

container
Object

Der Objektverweis, für den der Ausdruck ausgewertet wird. Dabei muss es sich um einen gültigen Objektbezeichner in der angegebenen Sprache der Seite handeln.

expression
String

Der Pfad vom container-Objekt zum Wert der öffentlichen Eigenschaften, der in der Eigenschaft des gebundenen Steuerelements platziert werden soll. Dieser muss eine Zeichenfolge von Eigenschaften- oder Feldnamen sein, die durch Punkte voneinander getrennt sind, z.B. Tables[0].DefaultView.[0].Price in C# oder Tables(0).DefaultView.(0).Price in Visual Basic.

format
String

Eine .NET Framework-Formatierungszeichenfolge (wie von Format(String, Object) verwendet), die die vom Datenbindungsausdruck zurückgegebene Object-Instanz in ein String-Objekt konvertiert

Gibt zurück

String

Ein String-Objekt, das sich beim Auswerten des Datenbindungsausdrucks und dem Konvertieren in einen Zeichenfolgentyp ergibt

Beispiele

In den folgenden Beispielen wird gezeigt, wie sie die Eval Methode zum Binden von Daten an Repeater das Steuerelement verwenden. Es erfordert eine Datenklasse namens "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

Die CodeBehind-Datei lädt Testdaten und bindet diese Daten an ein Repeater Steuerelement.

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

In der deklarativen Syntax für das Repeater Steuerelement verwenden Sie die Eval Methode Container.DataItem für den container Parameter.

<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>

Oder Sie können die Funktion aufrufen Eval und den container Parameter nicht einschließen.

<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>

Hinweise

Der Wert des Werts expression muss für eine öffentliche Eigenschaft ausgewertet werden.

Weitere Informationen zum Formatieren von Zeichenfolgen im .NET Framework finden Sie unter Formatierungstypen.

Diese Methode wird automatisch aufgerufen, wenn Sie Datenbindungen in einem schnellen Anwendungsentwicklungs-Designer (RAD) wie Visual Studio erstellen. Sie können es auch deklarativ verwenden, um das Object Ergebnis aus dem Datenbindungsausdruck in einen zu Stringkonvertieren. Wenn Sie die Methode deklarativ verwenden möchten, verwenden Sie die <%# %> Ausdruckssyntax, wie sie in der Standard-ASP.NET Datenbindung verwendet wird.

Diese Methode ist besonders nützlich, wenn Daten an Steuerelemente gebunden werden, die sich in einer vorlagenbasierten Liste befinden.

Hinweis

Da diese Methode verspätete Auswertungen durchführt, kann dies zur Laufzeit dazu führen, dass die Leistung im Vergleich zur standardmäßigen ASP.NET Datenbindungssyntax spürbar langsam ist. Verwenden Sie diese Methode sorgfältig, insbesondere, wenn die Zeichenfolgenformatierung nicht erforderlich ist.

Für alle Listenwebsteuerelemente, z GridView. B. , DetailsView, DataList, oder Repeater, container sollte Container.DataItemsein. Wenn Sie an die Seite gebunden sind, container sollte es sich um Page.

Ab .NET Framework 4.5 können Sie die Modellbindung verwenden, um einige der Aufgaben zu vereinfachen, die Sie durch Datenbindung in früheren Versionen ausführen mussten. Eine Lernprogrammreihe zur Verwendung der Modellbindung mit Web Forms finden Sie unter Model Binding and Web Forms.

Siehe auch

Gilt für: