標籤:blog http io ar strong for 檔案 div sp
首先看一個aspx檔案裡的部分內容:
[html] view plaincopy
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head id="Head1" runat="server">
- <title></title>
- </head>
- <body>
- <form id="form1" runat="server">
- </form>
- </body>
- </html>
我們知道ASP.NET會把這個文檔解析成類似Dom的控制項樹,控制項樹是分層、遞迴的。其中最頂層的是頁面Page,那麼現在要問,Page的下一層有多少個控制項?
答案是5個,可以輸出this.Page.Controls.Count的值驗證一下。它是怎麼解析的呢?
第一個:從<!DOCTYPE到transitional.dtd">\r\n
第二個:從<head id="Head1"到</head>,類型為HtmlHead;
第三個:包括</head>後面的\r\n\<body>\r\n\t
第四個:從<form id=到</form>,類型為HtmlForm;
第五個:從</form>後面的\r\n到最後。
其中第二個和第四個屬於Html控制項,而第一、三、五個則屬於靜態文本,ASP.NET將其解析成LiteralControl。LiteralControl既不是Web控制項,也不是Html控制項,自成一類,表示 HTML 元素、文本和 ASP.NET 頁中不需要在伺服器上處理的任何其他字串。幾乎可以說,LiteralControl是ASP.NET中肯定用到的控制項,只是你可能不知道而已。
關於LiteralControl,有幾點說明:
1. LiteralControl也可以有ID、ClientID和UniqueID,但一般很少用到。除了用FindControl方法外,給其設定ID沒有什麼意義。
2. LitrelControl不具有檢視狀態,雖然它也有一個EnableViewState屬性,但不起作用,回傳後先前更改的狀態必丟失。
3.由於表示的是靜態文本,所以無法為LitrelControl本身設定任何樣式。
4. 後台通過其Text屬性擷取和設定值。
ASP.NET中的另類控制項