標籤:
由控制項的外觀、樣式組成的集合,由一個檔案組構成,存放在App_Themes檔案夾下。
主題包括:皮膚檔案(.Skin)、CSS檔案(.CSS)、圖片、其它資源等。
主題的作用:統一設定Web頁面的外觀。
主題與CSS的比較
相似點 允許定義一組作用於多個頁面中的控制項的樣式特性。
不同點 主題基於控制項而不是HTML
主題允許定義和重用幾乎所有的控制項屬性
CSS只是直接作用於HTML的樣式特性
主題應用在伺服器上
主題作用到頁面時,格式化後的最終頁面被傳送給使用者。
使用樣式表時,瀏覽器同時接收到頁面和樣式資訊並在用戶端合并它們。
不同點 可以通過設定檔來應用主題 不必修改任何一個頁面就可以對整個檔案及或整個網站應用程式主題
主題不會像CSS那樣級聯 CSS:內聯樣式優先採用
主題:主題裡定義的值會覆蓋控制項的屬性。可以通過提高頁面屬性的優先順序來改變,這樣主題的行為將更像樣式表。
分工協作
CSS檔案:HTML控制項和頁面的樣式屬性
主題:伺服器控制項的樣式屬性 皮膚代碼中只留樣式代碼其餘都移除
控制項皮膚類型 預設皮膚 應用於同一類型的所有控制項 唯一 已命名皮膚 包含SkinID屬性 多個SkinID不重複
定義預設皮膚
<asp:TextBox runat="server" BackColor="#8080FF" BorderStyle=“Groove” ForeColor=“Red“ /> *該代碼是寫在皮膚檔案中而不是分頁檔中
這是命名皮膚
<asp:TextBox runat="server" BackColor="#8080FF" BorderStyle=“Groove” ForeColor=“Red“ SkinID=“txt1" />
<asp:TextBox ID=“TextBox1" SkinID=“txt1" Runat="server" /> 寫在網頁中
在頁面層級應用主題
<%@Page Theme="主題名" >
在網站設定檔
<configuration>
<system.web>
<Pages theme="主題名" />
</system.web>
</configuration>
主題衝突
如果控制項的屬性和主題定義的屬性衝突,總是優先使用主題定義的屬性
改變優先順序
<%@Page styleSheetTheme="主題名" >
styleSheetTheme<控制項屬性<Theme
一個ASP.NET頁面的生命週期為: 頁面事件執行的順序
用戶端請求頁面-->預初始化conPreInit-->初始化conInit-->完成初始化conInitComplete-->載入ViewState(LoadViewState)-->處理回送資料(IsPostBackDataHander)-->Page_OnPreLoad-->Page_OnLoad-->回傳更改通知-->處理回傳事件-->Page_OnLoadComplete-->預呈現-->完成預呈現-->儲存-->儲存ViewState-->呈現-->Page_UnLoad
在第2步就可以進行定義網站主題(Theme)
動態載入主題:
Button_Click事件
Response.Redirect("Default.aspx?Theme=red")
page_PreInit 事件, 這個事件需要自己手動寫 //在載入事件前面完成
if(Request.QueryString["Theme"]!=null)
string theme=Request.QueryString["Theme"].ToString();
換主題: 用 DropDownList 控制項做
//確定由哪個控制項引發頁面回傳,記錄此控制項的唯一識別碼
UniqueID -->在網頁中此控制項的ID
△產生網頁時會有(_ _EVENTTARGET)產生 //_ _EVENTTARGET 頁面隱藏欄位中擷取
string ID=Request.Form["_ _EVENTTARGET"] //誰引發頁面回傳就得到誰的ID
Request.Form[id] //擷取列表值
自訂控制項:封裝小部分內容
母板頁:封裝大部分相同的內容
當有主版頁面,內容頁,自訂控制項事件發生順序
內容 》》 主版頁面 》》 自訂控制項
preInit-->PageLoad-->PageLoad-->PageLoad
主題簡介 ASP .NET