DataBinder.Eval Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.