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 aufgaben zu vereinfachen, die Sie in früheren Versionen über die Datenbindung ausführen mussten. Eine Tutorialreihe zur Verwendung der Modellbindung mit Web Forms finden Sie unter Modellbindung und 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. Dies muss eine Zeichenfolge von Eigenschaften- oder Feldnamen sein, die durch Punkte getrennt sind, z Tables[0].DefaultView.[0].Price . B. in C# oder Tables(0).DefaultView.(0).Price in Visual Basic.

Gibt zurück

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

Ausnahmen

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

Beispiele

Die folgenden Beispiele zeigen, wie Sie die Eval -Methode verwenden, um Daten an das Steuerelement zu Repeater binden. Hierfür ist eine Datenklasse mit dem Namen Product erforderlich.

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 mit 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 zu einer öffentlichen Eigenschaft ausgewertet werden.

Diese Methode wird automatisch aufgerufen, wenn Sie Datenbindungen in einem RAD-Designer (Rapid Application Development) 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 sie in der Standarddatenbindung ASP.NET verwendet wird.

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

Hinweis

Da diese Methode eine spät gebundene Auswertung unter Verwendung von Reflektion zur Laufzeit durchführt, kann die Leistung im Vergleich zur Standardmäßigen ASP.NET Datenbindungssyntax spürbar verlangsamt werden.

Für jedes der Listenwebsteuerelemente, z GridView. B. , DetailsView, DataListoder Repeater, container sollte sein Container.DataItem. Wenn Sie eine Bindung für die Seite erstellen, container sollte sein Page.

Ab .NET Framework 4.5 können Sie die Modellbindung verwenden, um einige aufgaben zu vereinfachen, die Sie in früheren Versionen über die Datenbindung ausführen mussten. Eine Tutorialreihe zur Verwendung der Modellbindung mit Web Forms finden Sie unter Modellbindung und Web Forms.

Weitere Informationen

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. Dies muss eine Zeichenfolge von Eigenschaften- oder Feldnamen sein, die durch Punkte getrennt sind, z Tables[0].DefaultView.[0].Price . B. 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

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

Beispiele

Die folgenden Beispiele zeigen, wie Sie die Eval -Methode verwenden, um Daten an das Steuerelement zu Repeater binden. Hierfür ist eine Datenklasse mit dem Namen Product erforderlich.

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 mit 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 von expression muss zu einer öffentlichen Eigenschaft ausgewertet werden.

Weitere Informationen zu Formatzeichenfolgen im .NET Framework finden Sie unter Formatierungstypen.

Diese Methode wird automatisch aufgerufen, wenn Sie Datenbindungen in einem RAD-Designer (Rapid Application Development) wie Visual Studio erstellen. Sie können es auch deklarativ verwenden, um das Object aus dem Datenbindungsausdruck resultierende in eine Stringzu konvertieren. Um die Methode deklarativ zu verwenden, verwenden Sie die <%# %> Ausdruckssyntax, wie sie in der Standarddatenbindung ASP.NET verwendet wird.

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

Hinweis

Da diese Methode eine spät gebundene Auswertung unter Verwendung von Reflektion zur Laufzeit durchführt, kann die Leistung im Vergleich zur Standardmäßigen ASP.NET Datenbindungssyntax spürbar verlangsamt werden. Verwenden Sie diese Methode mit Bedacht, insbesondere wenn keine Zeichenfolgenformatierung erforderlich ist.

Für jedes der Listenwebsteuerelemente, z GridView. B. , DetailsView, DataListoder Repeater, container sollte sein Container.DataItem. Wenn Sie eine Bindung für die Seite erstellen, container sollte sein Page.

Ab .NET Framework 4.5 können Sie die Modellbindung verwenden, um einige aufgaben zu vereinfachen, die Sie in früheren Versionen über die Datenbindung ausführen mussten. Eine Tutorialreihe zur Verwendung der Modellbindung mit Web Forms finden Sie unter Modellbindung und Web Forms.

Weitere Informationen

Gilt für: