ASP.NET 資料繫結表達式包含在 <%# %> 中,於呼叫 DataBind() 時運算。支援繫結至伺服器控件屬性、頁面屬性/方法、資料源欄位等。本文整理語法規則、Container.DataItem 用法、C#/VB 差異與單值輸出 <%= %> 差異。
DataBind() 執行時。<%# 運算式 %>。Container.DataItem 代表當前繫結的單一資料項 (DataRow、List 項目、自訂物件等),其型別取決於資料源。
<%# Container.DataItem %> ' 字串集合直接輸出
<%# Container.DataItem("欄位名") %> ' DataView/DataTable 欄位
<%# Container.DataItem.PropertyName %> ' 物件屬性
<%# CStr(Container.DataItem.PropertyName) %> ' 強制轉字串
<%# Container.DataItem %> <%# ((DataRowView)Container.DataItem)["PropertyName"] %> <%# ((MyEntity)Container.DataItem).PropertyName %> <%# ((MyEntity)Container.DataItem).PropertyName.ToString() %>
<%# PropertyName %> ' 頁面屬性 <asp:ListBox DataSource='<%# PropertyName %>' /> ' 繫結集合屬性 <%# (ObjectName.PropertyName) %> ' 頁面物件屬性 <%# MethodName() %> ' 頁面方法回傳值
| 語法 | 執行時機 | 適用場景 |
|---|---|---|
<%= Value %> | Render 階段 | 單一值直接輸出,不需 DataBind() |
<%# Expr %> | DataBind() 時 | 資料繫結上下文、支援雙向繫結 |
<%# %>。<%= %>,但避免在資料控件模板中混用。as / (Type)) 可避免執行期錯誤。熟練掌握繫結語法,能讓 ASPX 樣板更簡潔、邏輯更清晰。