다음을 통해 공유


DataBinder.Eval 메서드

정의

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

오버로드

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 개체부터 public 속성 값까지의 탐색 경로이며, C#에서의 Tables[0].DefaultView.[0].Price 또는 Visual Basic에서의 Tables(0).DefaultView.(0).Price와 같이 마침표로 구분된 속성 또는 필드 이름의 문자열이어야 합니다.

반환

Object

데이터 바인딩 식을 계산한 결과인 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 메서드 containerContainer.DataItem 사용합니다.

<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또는 Repeatercontainer 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 개체부터 public 속성 값까지의 탐색 경로이며, C#에서의 Tables[0].DefaultView.[0].Price 또는 Visual Basic에서의 Tables(0).DefaultView.(0).Price와 같이 마침표로 구분된 속성 또는 필드 이름의 문자열이어야 합니다.

format
String

데이터 바인딩 식에서 반환된 Format(String, Object) 인스턴스를 Object 개체로 변환하는, String에 사용되는 것과 유사한 .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 메서드 containerContainer.DataItem 사용합니다.

<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또는 Repeatercontainer Container.DataItem)의 경우 . 페이지에 container 바인딩하는 경우 여야 Page합니다.

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

추가 정보

적용 대상