﻿# 如何在頁面中直接使用資料繫結運算式語法〈%# ... %〉

我們在要在頁面中直接輸出一個變數可以使用 <%= DataTime.Now %> 等於法，或是透過一個頁面的屬性(Property)或方法(Method)進行存取，例如說：

```csharp
protected string Today()
{
    return DateTime.Now.ToString("yyyy-MM-dd");
}
```

在頁面中就可以用以下方式直接輸出：

```csharp
<%=GetToday() %>
```

所以使用 <%= ... %> 語法就等於使用 Response.Write 一樣，且程式碼會再 PreRender 之後才會執行。 

但是當我們希望要將資料指定到控制項的屬性中時，那就不能使用以下方法了：

```csharp
<asp:Label runat="server" ID="Label1" Text='<%=GetToday() %>'></asp:Label>
```

但如果你要換成用 <%# ... %> 語法的話，是不會出錯，但卻也無法執行！

這個問題困擾我很久了，且讓我有個錯誤的觀念認為只有在資料繫結控制項(Data-Bound Control)的 Template 中才能使用 <%# ... %> 語法！直到最近我看了 [Programming Microsoft® ASP.NET 3.5](http://web.archive.org/web/20120207004341/http://www.microsoft.com/learning/en/us/book.aspx?ID=12001&locale=en-us "Programming Microsoft ASP.NET 3.5") 這本書，才知道原來我只是少了一個步驟而已，那就是執行 Page.DataBind() 方法：

```csharp
protected void Page_Load(object sender, EventArgs e)
{
    Page.DataBind();
}
```

因此在頁面中任何地方都可以使用「資料繫結運算式語法」（ <%# ...  %> ），只是需要手動寫一行程式讓資料繫結運算式語法能夠執行而已！

**相關網址**

-   資料繫結運算式語法  
    [http://msdn2.microsoft.com/zh-tw/library/ms178366.aspx](http://msdn2.microsoft.com/zh-tw/library/ms178366.aspx)  
      
    
-   Page.DataBind 方法  
    [http://msdn2.microsoft.com/zh-tw/library/system.web.ui.page.databind.aspx](http://msdn2.microsoft.com/zh-tw/library/system.web.ui.page.databind.aspx)  
      
    
-   ASP.NET 資料繫結概觀  
    [https://web.archive.org/web/20100301174014/http://support.microsoft.com:80/kb/307860](https://web.archive.org/web/20100301174014/http://support.microsoft.com:80/kb/307860)  
      
    
-   Data Binding Expression Syntax  
    [http://msdn2.microsoft.com/en-us/library/bda9bbfx(vs.71).aspx](http://msdn2.microsoft.com/en-us/library/bda9bbfx\(vs.71\).aspx)
