1. ASP.NET 聲明性數據綁定語法使用 <%# %> 表示法。
2. 可以綁定到數據源、頁或其他控件的屬性、集合、表達式以及從方法調用返回的結果。
3. 語法示例
簡單屬性 | Customer: <%# custID %> |
集合 | Orders: <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server"> |
表達式 | Contact: <%# ( customer.First Name + " " + customer.LastName ) %> |
方法結果 | Outstanding Balance: <%# GetBalance(custID) %> |
4. ASP Response.Write 與 DataBind 方法區別
ASP Response.Write 快捷方式語法在處理頁時計算,而 ASP.NET 數據綁定語法僅在調用 DataBind 方法時計算。
5. DataBind 的級聯
當在父控件上調用 DataBind 時,它級聯到該控件的所有子控件。
例如,DataList1.DataBind()
將因此對 DataList 模板中的每一控件調用 DataBind 方法。在頁上調用 DataBind — Page.DataBind()
或只是 DataBind()
— 會導致計算頁上的所有數據綁定表達式
6. DataBinder.Eval
A.計算後期綁定的數據綁定表達式並且可選擇將結果格式化爲字符串。
C.DataBinder.Eval 會對標準數據綁定語法帶來很明顯的性能損失,因爲它使用後期綁定反射,注意這一點很重要。使用 DataBinder.Eval 時需謹慎,尤其是在不需要字符串格式化時。
7.數據綁定表達式必須計算爲 String 類型的值
自定義控件類的代碼
using System;
using System.Web;
using System.Web.UI;
namespace SimpleControlSamples {
public class Simple : Control {
protected override void Render(HtmlTextWriter output) {
output.Write("<H2>歡迎使用控件開發!</H2>");
}
}
}
aspx頁引用該自定義控件的代碼
<%@ Register TagPrefix="SimpleControlSamples" Namespace="SimpleControlSamples" Assembly="SimpleControlSamples" %>
<SimpleControlSamples:Simple id="MyControl" runat=server/>
屬性類似具有訪問器方法的“聰明”字段。應該從控件公開屬性而不是公開公共字段,因爲屬性允許數據隱藏、可以版本化並受可視化設計器的支持。屬性具有設置和檢索屬性的 get/set 訪問器方法,並允許在需要時執行附加的程序邏輯。
如果 A 類具有一個類型爲 B 類的屬性,則 B 的屬性(如果有)稱爲 A 的子屬性。下面的示例定義自定義控件 SimpleSubProperty
,該控件具有 Format
類型的屬性。Format
是具有兩個基元屬性的類——Color
和 Size
,這兩個屬性反過來成爲 SimpleSubProperty
的子屬性。
注意 ASP.NET 具有設置子屬性的特殊語法。下面的代碼示例顯示如何以聲明方式設置 SimpleSubProperty
上的 Format.Color
和 Format.Size
子屬性。“-”語法指示子屬性。
<SimpleControlSamples:SimpleSubProperty Message="Hello There" Format-Color="red" Format-Size="3" runat=server/>
每個控件都具有從 System.Web.UI.Control 繼承的 Controls 屬性. 這是表示控件的子控件(如果有)的集合屬性
ParseChildrenAttribute ParseChildrenAttribute(ChildrenAsProperties = false)ASP.NET Controls LiteralControl
:
我的消息在控件標記內!!!!
</SimpleControlSamples:SimpleInnerContent>
<input type=”text” runat = server> </SimpleControlSamples:SimpleInnerContent>
以上錯誤,因爲<input type=”text” runat = server>是一個控件,標記之間只能添加文本,要添加控件,必須設置屬性ParseChildrenAttribute=true
在分析 ASP.NET 頁時,樣式信息被填充到 System.Web.UI.HtmlControls.HtmlControl 類上的 Style 屬性(CssStyleCollection 類型)中。該屬性本質上是一個詞典,它將控件的樣式公開爲每個樣式屬性鍵值的字符串索引集合。例如,可以使用下面的代碼在 HtmlInputText 服務器控件上設置並隨後檢索 width 樣式屬性。
<script language="JavaScript" type="text/javascript"> function doClick(index, numTabs, id) { document.all("tab" + id, index).className = "tab"; for (var i=1; i < numTabs; i++) { document.all("tab" + id, (index + i) % numTabs).className = "backtab"; } document.all("code" + id, index).style.display = ""; for (var j=1; j < numTabs; j++) { document.all("code" + id, (index + j) % numTabs).style.display = "none"; } } </script>
<script language="C#" runat="server" >
void Page_Load(Object sender, EventArgs E) { MyText.Style["width"] = "90px"; Response.Write(MyText.Style["width"]); }
</script>
<input type="text" id="MyText" runat="server"/>
|