我們在要在頁面中直接輸出一個變數可以使用 <%= DataTime.Now %> 等於法,或是透過一個頁面的屬性(Property)或方法(Method)進行存取,例如說:
[code:c#]
protected string Today()
{
return DateTime.Now.ToString("yyyy-MM-dd");
}
[/code]
在頁面中就可以用以下方式直接輸出:
[code:c#]
<%=GetToday() %>
[/code]
所以使用 <%= ... %> 語法就等於使用 Response.Write 一樣,且程式碼會再 PreRender 之後才會執行。
但是當我們希望要將資料指定到控制項的屬性中時,那就不能使用以下方法了:
[code:c#]
<asp:Label runat="server" ID="Label1" Text='<%=GetToday() %>'></asp:Label>
[/code]
但如果你要換成用 <%# ... %> 語法的話,是不會出錯,但卻也無法執行!
這個問題困擾我很久了,且讓我有個錯誤的觀念認為只有在資料繫結控制項(Data-Bound Control)的 Template 中才能使用 <%# ... %> 語法!直到最近我看了 Programming Microsoft® ASP.NET 3.5 這本書,才知道原來我只是少了一個步驟而已,那就是執行 Page.DataBind() 方法:
[code:c#]
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
}
[/code]
因此在頁面中任何地方都可以使用「資料繫結運算式語法」( <%# ... %> ),只是需要手動寫一行程式讓資料繫結運算式語法能夠執行而已!
相關網址