The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

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

我們在要在頁面中直接輸出一個變數可以使用 <%= 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]

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

相關網址