DataBinder.Eval 메서드

정의

리플렉션을 사용하여 런타임에 개체에 대한 데이터 바인딩 식을 구문 분석하고 평가합니다.

오버로드

Name Description
Eval(Object, String)

런타임에 데이터 바인딩 식을 평가합니다.

Eval(Object, String, String)

런타임에 데이터 바인딩 식을 평가하고 결과 형식을 문자열로 지정합니다.

설명

.NET Framework 4.5부터 모델 바인딩을 사용하여 이전 버전의 데이터 바인딩을 통해 수행해야 했던 일부 작업을 간소화할 수 있습니다. Web Forms에서 모델 바인딩을 사용하는 방법에 대한 자습서 시리즈는 모델 바인딩 및 Web Forms를 참조하세요.

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 배치할 공용 속성 값에 대한 개체의 탐색 경로입니다. C#의 Tables[0].DefaultView.[0].Price 또는 Visual Basic Tables(0).DefaultView.(0).Price 같이 마침표로 구분된 속성 또는 필드 이름의 문자열이어야 합니다.

반품

Object 데이터 바인딩 식의 평가 결과인 인스턴스입니다.

예외

expressionnull 트리밍 후 빈 문자열이거나 비어 있는 문자열입니다.

예제

다음 예제에서는 메서드를 사용하여 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 값은 public 속성으로 평가되어야 합니다.

이 메서드는 Visual Studio 같은 RAD(신속한 애플리케이션 개발) 디자이너에서 데이터 바인딩을 만들 때 자동으로 호출됩니다. 선언적으로 사용하여 텍스트 문자열로의 캐스팅을 간소화할 수도 있습니다. 이렇게 하려면 표준 ASP.NET 데이터 바인딩에 사용되는 <%# %> 식 구문을 사용합니다.

이 메서드는 템플릿 목록에 있는 컨트롤에 데이터를 바인딩할 때 특히 유용합니다.

메모

이 메서드는 런타임에 리플렉션을 사용하여 런타임에 런타임에 런타임에 바인딩된 평가를 수행하므로 표준 ASP.NET 데이터 바인딩 구문에 비해 성능이 눈에 띄게 느려질 수 있습니다.

목록의 경우 웹 컨트롤(예: GridView, DetailsViewDataList또는 Repeater) container 이어야 Container.DataItem합니다. 페이지에 container 대해 바인딩하는 경우 여야 Page합니다.

.NET Framework 4.5부터 모델 바인딩을 사용하여 이전 버전의 데이터 바인딩을 통해 수행해야 했던 일부 작업을 간소화할 수 있습니다. Web Forms에서 모델 바인딩을 사용하는 방법에 대한 자습서 시리즈는 모델 바인딩 및 Web Forms를 참조하세요.

추가 정보

적용 대상

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 배치할 공용 속성 값에 대한 개체의 탐색 경로입니다. C#의 Tables[0].DefaultView.[0].Price 또는 Visual Basic Tables(0).DefaultView.(0).Price 같이 마침표로 구분된 속성 또는 필드 이름의 문자열이어야 합니다.

format
String

데이터 바인딩 식에서 반환된 Format(String, Object) 인스턴스를 Object 개체로 변환하는 .NET Framework 형식 문자열(예: 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 은 public 속성으로 계산되어야 합니다.

.NET Framework의 형식 문자열에 대한 자세한 내용은 형식 서식 지정 참조하세요.

이 메서드는 Visual Studio 같은 RAD(신속한 애플리케이션 개발) 디자이너에서 데이터 바인딩을 만들 때 자동으로 호출됩니다. 또한 이를 선언적으로 사용하여 데이터 바인딩 식의 결과를 .로 변환 Object 할 수도 있습니다 String. 메서드를 선언적으로 사용하려면 표준 ASP.NET 데이터 바인딩에 사용되는 <%# %> 식 구문을 사용합니다.

이 메서드는 템플릿 목록에 있는 컨트롤에 데이터를 바인딩할 때 특히 유용합니다.

메모

이 메서드는 런타임에 리플렉션을 사용하여 런타임에 런타임에 런타임에 바인딩된 평가를 수행하므로 표준 ASP.NET 데이터 바인딩 구문에 비해 성능이 눈에 띄게 느려질 수 있습니다. 특히 문자열 서식이 필요하지 않은 경우 이 메서드를 신중하게 사용합니다.

목록의 경우 웹 컨트롤(예: GridView, DetailsViewDataList또는 Repeater) container 이어야 Container.DataItem합니다. 페이지에 container 대해 바인딩하는 경우 여야 Page합니다.

.NET Framework 4.5부터 모델 바인딩을 사용하여 이전 버전의 데이터 바인딩을 통해 수행해야 했던 일부 작업을 간소화할 수 있습니다. Web Forms에서 모델 바인딩을 사용하는 방법에 대한 자습서 시리즈는 모델 바인딩 및 Web Forms를 참조하세요.

추가 정보

적용 대상