Язык

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.DataItemcontainer параметра.

<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.

Этот метод особенно полезен при привязке данных к элементам управления, которые находятся в шаблонном списке.

Note

Так как этот метод выполняет позднюю оценку, используя отражение во время выполнения, производительность может значительно замедляться по сравнению со стандартным синтаксисом привязки данных ASP.NET.

Для любого из веб-элементов управления списком, таких как GridView, DetailsViewDataListилиRepeater, container должно быть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.DataItemcontainer параметра.

<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 см. в разделе Formatting Types.

Этот метод автоматически вызывается при создании привязок данных в конструкторе быстрой разработки приложений (RAD), например Visual Studio. Его можно также использовать декларативно для преобразования итогового Object выражения привязки данных в объект String. Чтобы использовать метод декларативно, используйте синтаксис выражения <%# %>, используемый в стандартной привязке данных ASP.NET.

Этот метод особенно полезен при привязке данных к элементам управления, которые находятся в шаблонном списке.

Note

Так как этот метод выполняет позднюю оценку, используя отражение во время выполнения, производительность может значительно замедляться по сравнению со стандартным синтаксисом привязки данных ASP.NET. Используйте этот метод разумно, особенно если форматирование строк не требуется.

Для любого из веб-элементов управления списком, таких как GridView, DetailsViewDataListилиRepeater, container должно бытьContainer.DataItem. Если вы привязываются к странице, container должно быть Page.

Начиная с .NET Framework 4.5, можно использовать привязку модели для упрощения некоторых задач, которые необходимо выполнить с помощью привязки данных в более ранних версиях. Серию руководств по использованию привязки модели с веб-формами см. в статье " Привязка моделей" и "Веб-формы".

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

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