DataBinder.Eval Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Использует отражение для разбора и обработки выражений привязки данных с объектом во время исполнения программы.
Перегрузки
Eval(Object, String) |
Обрабатывает выражения привязки данных во время исполнения программы. |
Eval(Object, String, String) |
Обрабатывает выражения привязки данных во время выполнения и представляет результат в виде строки. |
Комментарии
Начиная с платформа .NET Framework 4.5, можно использовать привязку модели, чтобы упростить некоторые задачи, которые необходимо выполнить с помощью привязки данных в более ранних версиях. Серия руководств по использованию привязки модели с веб-формы см. в статье "Привязка модели" и веб-формы.
Eval(Object, String)
Обрабатывает выражения привязки данных во время исполнения программы.
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
Параметры
- container
- Object
Ссылка на объект, для которого будет разбираться выражение. Это должен быть действительный идентификатор объекта на языке, определенном для страницы.
- expression
- String
Путь перехода от объекта container
к значению общедоступного свойства, которое должно быть помещено в свойство привязанного элемента управления. Значение должно быть строкой имен свойств или полей, разделенных точками, например Tables[0].DefaultView.[0].Price
в C# или Tables(0).DefaultView.(0).Price
в Visual Basic.
Возвращаемое значение
Экземпляр Object, являющийся результатом вычисления выражения привязки данных.
Исключения
Параметр expression
представляет собой значение null
или пустую строку после усечения.
Примеры
В следующих примерах показано, как использовать метод для привязки Eval
данных к элементу Repeater управления. Для этого требуется класс данных с именем 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
Файл кода программной части загружает тестовые данные и привязывает их к элементу Repeater управления.
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
В декларативном синтаксисе Repeater элемента управления используется Eval метод с Container.DataItem
параметром 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>
Кроме того, можно вызвать Eval
функцию и не включить 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>
Комментарии
Значение expression
параметра должно оцениваться как общедоступное свойство.
Этот метод автоматически вызывается при создании привязок данных в конструкторе быстрой разработки приложений (RAD), таком как Visual Studio. Его также можно использовать декларативно для упрощения приведения к текстовой строке. Для этого используется синтаксис выражений<%# %>
, используемый в стандартной ASP.NET привязке данных.
Этот метод особенно полезен при привязке данных к элементам управления, которые находятся в шаблонном списке.
Примечание
Так как этот метод выполняет оценку с поздним связыванием, используя отражение во время выполнения, производительность может заметно замедляться по сравнению со стандартным синтаксисом привязки данных ASP.NET.
Для любого из веб-элементов управления списка, таких как GridView, DataListDetailsViewили, container
Repeaterдолжно бытьContainer.DataItem
. Если вы привязываются к странице, container
должно быть Page
.
Начиная с платформа .NET Framework 4.5, можно использовать привязку модели, чтобы упростить некоторые задачи, которые необходимо выполнить с помощью привязки данных в более ранних версиях. Серия руководств по использованию привязки модели с веб-формы см. в статье "Привязка модели" и веб-формы.
См. также раздел
Применяется к
Eval(Object, String, String)
Обрабатывает выражения привязки данных во время выполнения и представляет результат в виде строки.
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
Параметры
- container
- Object
Ссылка на объект, для которого будет разбираться выражение. Это должен быть действительный идентификатор объекта на языке, определенном для страницы.
- expression
- String
Путь перехода от объекта container
к значению общедоступного свойства, которое должно быть помещено в свойство привязанного элемента управления. Значение должно быть строкой имен свойств или полей, разделенных точками, например Tables[0].DefaultView.[0].Price
в C# или Tables(0).DefaultView.(0).Price
в Visual Basic.
- format
- String
Строка формата платформы .NET Framework (подобно используемым методом Format(String, Object)), которая преобразует экземпляр Object, возвращенный выражением привязки данных, в объект String.
Возвращаемое значение
Объект String, полученный в результате вычисления выражения привязки данных и преобразования в строковый тип.
Примеры
В следующих примерах показано, как использовать метод для привязки Eval
данных к элементу Repeater управления. Для этого требуется класс данных с именем 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
Файл кода программной части загружает тестовые данные и привязывает их к элементу Repeater управления.
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
В декларативном синтаксисе Repeater элемента управления используется Eval метод с Container.DataItem
параметром 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>
Кроме того, можно вызвать Eval
функцию и не включить 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>
Комментарии
Значение expression
должно оцениваться как общедоступное свойство.
Дополнительные сведения о строках форматирования в платформа .NET Framework см. в разделе "Типы форматирования".
Этот метод автоматически вызывается при создании привязок данных в конструкторе быстрой разработки приложений (RAD), таком как Visual Studio. Его также можно использовать декларативно для преобразования Object результирующего выражения привязки данных в .String Чтобы использовать метод декларативно, используйте <%# %>
синтаксис выражения, используемый в стандартной ASP.NET привязке данных.
Этот метод особенно полезен при привязке данных к элементам управления, которые находятся в шаблонном списке.
Примечание
Так как этот метод выполняет оценку с поздним связыванием, используя отражение во время выполнения, производительность может заметно замедляться по сравнению со стандартным синтаксисом привязки данных ASP.NET. Используйте этот метод разумно, особенно если форматирование строк не требуется.
Для любого из веб-элементов управления списка, таких как GridView, DataListDetailsViewили, container
Repeaterдолжно бытьContainer.DataItem
. Если вы привязываются к странице, container
должно быть Page
.
Начиная с платформа .NET Framework 4.5, можно использовать привязку модели, чтобы упростить некоторые задачи, которые необходимо выполнить с помощью привязки данных в более ранних версиях. Серия руководств по использованию привязки модели с веб-формы см. в статье "Привязка модели" и веб-формы.