DataBinder.Eval Methode

Definition

Verwendet Spiegelung zum Analysieren und Auswerten eines Datenbindungsausdrucks für ein Objekt zur Laufzeit.

Überlädt

Eval(Object, String)

Wertet Datenbindungsausdrücke zur Laufzeit aus.

Eval(Object, String, String)

Wertet Datenbindungsausdrücke zur Laufzeit 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 WebFormularen 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. Dies muss ein gültiger Objektbezeichner in der angegebenen Sprache der Seite sein.

expression
String

Der Navigationspfad vom container-Objekt zum öffentlichen Eigenschaftswert, der in der gebundenen Steuerelementeigenschaft platziert werden soll. Dies muss eine Zeichenfolge von Eigenschafts- oder Feldnamen sein, die durch Punkte getrennt sind, z. B. Tables[0].DefaultView.[0].Price in C# oder Tables(0).DefaultView.(0).Price in Visual Basic.

Gibt zurück

Eine Object Instanz, die aus der Auswertung des Datenbindungsausdrucks resultiert.

Ausnahmen

expression ist null oder nach dem Kürzen eine leere Zeichenfolge.

Beispiele

Die folgenden Beispiele zeigen, wie Sie die Eval-Methode verwenden, um Daten an Repeater Steuerelement zu binden. Sie erfordert eine Datenklasse mit dem Namen "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 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>

Sie können auch Eval Funktion aufrufen und den parameter container 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 in eine öffentliche 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 in standard ASP.NET Datenbindung verwendet.

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

Anmerkung

Da diese Methode spät gebundene Auswertungen durchführt, kann dies zur Laufzeit zu einer spürbar langsamen Leistung im Vergleich zur standardmäßigen ASP.NET Datenbindungssyntax führen.

Für alle Listenwebsteuerelemente, z. B. GridView, DetailsView, DataListoder Repeater, sollte containerContainer.DataItemsein. Wenn Sie eine Bindung für die Seite erstellen, sollte containerPagesein.

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 WebFormularen finden Sie unter Model Binding and Web Forms.

Weitere Informationen

Gilt für:

Eval(Object, String, String)

Wertet Datenbindungsausdrücke zur Laufzeit 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. Dies muss ein gültiger Objektbezeichner in der angegebenen Sprache der Seite sein.

expression
String

Der Navigationspfad vom container-Objekt zum öffentlichen Eigenschaftswert, der in der gebundenen Steuerelementeigenschaft platziert werden soll. Dies muss eine Zeichenfolge von Eigenschafts- oder Feldnamen sein, die durch Punkte 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-Formatzeichenfolge (z. B. von Format(String, Object)), die die Object Instanz konvertiert, die vom Datenbindungsausdruck in ein String-Objekt zurückgegeben wird.

Gibt zurück

Ein String-Objekt, das aus der Auswertung des Datenbindungsausdrucks und der Konvertierung in einen Zeichenfolgentyp resultiert.

Beispiele

Die folgenden Beispiele zeigen, wie Sie die Eval-Methode verwenden, um Daten an Repeater Steuerelement zu binden. Sie erfordert eine Datenklasse mit dem Namen "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 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>

Sie können auch Eval Funktion aufrufen und den parameter container 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 in eine öffentliche 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 die Object aus dem Datenbindungsausdruck in einen Stringzu konvertieren. Um die Methode deklarativ zu verwenden, verwenden Sie die <%# %> Ausdruckssyntax, wie in der Standard-ASP.NET Datenbindung verwendet.

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

Anmerkung

Da diese Methode spät gebundene Auswertungen durchführt, kann dies zur Laufzeit zu einer spürbar langsamen Leistung im Vergleich zur standardmäßigen ASP.NET Datenbindungssyntax führen. Verwenden Sie diese Methode sorgfältig, insbesondere, wenn keine Zeichenfolgenformatierung erforderlich ist.

Für alle Listenwebsteuerelemente, z. B. GridView, DetailsView, DataListoder Repeater, sollte containerContainer.DataItemsein. Wenn Sie eine Bindung für die Seite erstellen, sollte containerPagesein.

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 WebFormularen finden Sie unter Model Binding and Web Forms.

Weitere Informationen

Gilt für: