Programming/.NET
ASP.NET 은 인라인에서 데이터를 바인딩 하기 위한 특정한 구문을 제공합니다. GridView 와 같은 컨트롤에서는 데이터소스만 지정해 주면 알아서 바인딩을 처리하지만 그렇지 못할 상황에서는 개발자가 임의로 어떤 데이터를 바인딩하면 좋을지 지정해 줄 필요가 있습니다.

예를 들어 Repeater 와 같은 컨트롤을 사용한다고 했을때 Repeater 는 자체적으로 아무것도 표시하지 않은 템플릿 컨트롤로서 내부 컨텐츠를 직접 정의해야 합니다. 만약 Repeater 에 SqlDataSource 를 지정했다면 내부적으로 어떤 데이터를 바인딩 해야 하는지 다음과 같은 방법으로 구현해야 하는 것입니다.
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
        <ItemTemplate>
        <tr>
            <td>
                <%# Eval("BusinessEntityID") %>
            </td>
            <td>
                <%# Eval("PhoneNumber") %>
            </td>
            <td>
                <%# Eval("ModifiedDate") %>
            </td>
        </tr>
        </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
위 예제에서 사용된 Eval 메소드는 데이터소스로 부터 가져올 특정 Item 을 지정하여 해당 영역에 표시할 수 있도록 하는 메소드이며 인라인 데이터 바인딩에서 가장 기본적으로 사용되는 구문입니다.

Eval 메소드를 사용할 때 해당 Item 에 대해서 특정 포멧을 적용해야 하는 경우 직접 원하는 포멧을 지정할 수 있도록 메소드를 오버라이드 할 수 있습니다.
<td>
    <%# Eval("ModifiedDate", "{0:yyyy-MM-dd}") %>
</td>
필요하다면 연산자를 사용해 다른 문자열과 같은 요소와 결합할 수도 있으며
<td>
    <%# "ID 값 : " + Eval("BusinessEntityID") %>
</td>
특정 메소드에 Item 값을 넘겨 원하는 처리를 진행할 수도 있습니다.
<td>
    <%# phone_to_name(Eval("PhoneNumber")) %>
</td>
참고로 Eval 이외에 데이터 바인딩 구문으로 Bind 메소드가 사용되기도 합니다. 흔히 2-way 바인딩이라고 하는 이 메소드는 Eval 처럼 Item 값을 읽기위한 역활 뿐 아니라 데이터를 수정하기 위한 동작에도 사용되는 메소드입니다.

따라서 GridView 나 DetailsView 등 데이터 편집이 가능한 컨트롤에 사용되어야 합니다.
<td>
    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("PhoneNumber") %>'></asp:TextBox>
</td>
0 0