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

Экземпляр 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

Объект 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, можно использовать привязку модели, чтобы упростить некоторые задачи, которые необходимо выполнить с помощью привязки данных в более ранних версиях. Серия руководств по использованию привязки модели с веб-формы см. в статье "Привязка модели" и веб-формы.

См. также раздел

Применяется к