DataBinder.Eval Metod

Definition

Använder reflektion för att parsa och utvärdera ett databindningsuttryck mot ett objekt vid körning.

Överlagringar

Name Description
Eval(Object, String)

Utvärderar databindningsuttryck vid körning.

Eval(Object, String, String)

Utvärderar databindningsuttryck vid körning och formaterar resultatet som en sträng.

Kommentarer

Från och med .NET Framework 4.5 kan du använda modellbindning för att förenkla vissa av de uppgifter som du var tvungen att utföra via databindning i tidigare versioner. En självstudieserie om hur du använder modellbindning med webbformulär finns i Modellbindning och Webbformulär.

Eval(Object, String)

Utvärderar databindningsuttryck vid körning.

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

Parametrar

container
Object

Objektreferensen som uttrycket utvärderas mot. Detta måste vara en giltig objektidentifierare på sidans angivna språk.

expression
String

Navigeringssökvägen från container objektet till det offentliga egenskapsvärdet som ska placeras i egenskapen bound control. Det här måste vara en sträng med egenskaps- eller fältnamn avgränsade med punkter, till exempel Tables[0].DefaultView.[0].Price i C# eller Tables(0).DefaultView.(0).Price i Visual Basic.

Returer

En Object instans som är resultatet av utvärderingen av databindningsuttrycket.

Undantag

expression är null eller är en tom sträng efter trimning.

Exempel

I följande exempel visas hur du använder Eval metoden för att binda data till Repeater kontroll. Det kräver en dataklass med namnet 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

Filen bakom koden läser in testdata och binder dessa data till en Repeater kontroll.

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

I kontrollens deklarativa syntax Repeater använder Eval du metoden med Container.DataItem för parametern 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>

Eller så kan du anropa Eval funktionen och inte inkludera parametern 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>

Kommentarer

Värdet för parametern expression måste utvärderas till en offentlig egenskap.

Den här metoden anropas automatiskt när du skapar databindningar i en RAD-designer (rapid application development), till exempel Visual Studio. Du kan också använda det deklarativt för att förenkla gjutning till en textsträng. För att göra det använder du uttryckssyntaxen <%# %> som används i standard-ASP.NET databindning.

Den här metoden är särskilt användbar när du binder data till kontroller som finns i en malllista.

Note

Eftersom den här metoden utför en sen utvärdering med reflektion vid körning kan det leda till att prestandan blir märkbart långsam jämfört med standardsyntaxen för ASP.NET databindning.

För någon av listwebbkontrollerna, till exempel GridView, DetailsView, DataListeller Repeater, container bör vara Container.DataItem. Om du är bindning mot sidan container ska vara Page.

Från och med .NET Framework 4.5 kan du använda modellbindning för att förenkla vissa av de uppgifter som du var tvungen att utföra via databindning i tidigare versioner. En självstudieserie om hur du använder modellbindning med webbformulär finns i Modellbindning och Webbformulär.

Se även

Gäller för

Eval(Object, String, String)

Utvärderar databindningsuttryck vid körning och formaterar resultatet som en sträng.

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

Parametrar

container
Object

Objektreferensen som uttrycket utvärderas mot. Detta måste vara en giltig objektidentifierare på sidans angivna språk.

expression
String

Navigeringssökvägen från container objektet till det offentliga egenskapsvärdet som ska placeras i egenskapen bound control. Det här måste vara en sträng med egenskaps- eller fältnamn avgränsade med punkter, till exempel Tables[0].DefaultView.[0].Price i C# eller Tables(0).DefaultView.(0).Price i Visual Basic.

format
String

En .NET Framework-formatsträng (som de som används av Format(String, Object)) som konverterar instansen Object som returneras av databindningsuttrycket till ett String-objekt.

Returer

Ett String objekt som är resultatet av att utvärdera databindningsuttrycket och konvertera det till en strängtyp.

Exempel

I följande exempel visas hur du använder Eval metoden för att binda data till Repeater kontroll. Det kräver en dataklass med namnet 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

Filen bakom koden läser in testdata och binder dessa data till en Repeater kontroll.

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

I kontrollens deklarativa syntax Repeater använder Eval du metoden med Container.DataItem för parametern 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>

Eller så kan du anropa Eval funktionen och inte inkludera parametern 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>

Kommentarer

Värdet för expression måste utvärderas till en offentlig egenskap.

Mer information om formatsträngar i .NET Framework finns i Formateringstyper.

Den här metoden anropas automatiskt när du skapar databindningar i en RAD-designer (rapid application development), till exempel Visual Studio. Du kan också använda det deklarativt för att konvertera Object resultatet från databindningsuttrycket till en String. Om du vill använda metoden deklarativt använder du syntaxen <%# %> uttryck som används i standard-ASP.NET databindning.

Den här metoden är särskilt användbar när du binder data till kontroller som finns i en malllista.

Note

Eftersom den här metoden utför en sen utvärdering med reflektion vid körning kan det leda till att prestandan blir märkbart långsam jämfört med standardsyntaxen för ASP.NET databindning. Använd den här metoden omdömesgillt, särskilt när strängformatering inte krävs.

För någon av listwebbkontrollerna, till exempel GridView, DetailsView, DataListeller Repeater, container bör vara Container.DataItem. Om du är bindning mot sidan container ska vara Page.

Från och med .NET Framework 4.5 kan du använda modellbindning för att förenkla vissa av de uppgifter som du var tvungen att utföra via databindning i tidigare versioner. En självstudieserie om hur du använder modellbindning med webbformulär finns i Modellbindning och Webbformulär.

Se även

Gäller för