日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET动态的修改主题

發布時間:2025/7/14 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET动态的修改主题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在有的網站上,允許用戶根據自己的喜好來更改皮膚,這個功能利用ASP.NET的主題機制可以方便的實現,在C#代碼中可以通過Page類的Theme屬性改變頁面的主題,代碼如下:

   Page.Theme ="要設置的主題名稱";

要想改變主題,第一個直觀的思想就是在頁面中添加一個DropDownList控件,然后用戶通過選擇相應的主題。 然后增加一個按鈕,在按鈕的Click的事件中根據用戶的選擇來進行修改。但是這個思路并不可行,因為根據對ASP.NET頁面生命周期的分析,當處理Button的click事件時,頁面主題已經應用完畢(因為控件的初始化在PreInit事件發生之前),此時修改

主題不可行。一個可行的思路就是必須在PreInit事件觸發是選擇好頁面的主題值。然后在頁面生命的早期階段(PreInit事件中),無法讀取用戶控件的狀態,顯然這是一組矛盾。所以這里需要一些技巧來解決這個矛盾。

  也行很快地就想出第二種方式,就是利用C#的事件處理,通過在按鈕的事件中重新觸發一次PreInit事件,代碼如下:

? protected void Page_Load(object sender, EventArgs e)
??????? {

      ?this.PreInit += new EventHandler(Page_PreInit);

??????? }

?protected void Page_PreInit(object sender, EventArgs e)

{

  this.Theme = DropDownList1.SelectedValue;

}

從實際的運行結果來看,這個方案也不可行,因為在頁面生命周期中,PreInit事件先運行,這時候并不知道控件DropDownList的狀態,所以矛盾沒有解決。

????? 第三種方案就是把用戶所選擇的主題作為一個QueryString參數傳遞,然后在Page類的PreInit事件中讀取此參數并修改主題。

假設已創建了兩個主題:GrassGreen 和SkyBlue,在添加一個客戶端按鈕,并為此按鈕編寫JavaScript腳本。代碼如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ThemePage.aspx.cs" Inherits="ExampleChapter1Dot9.ThemePage" Theme="GrassGreen" %>

<!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 runat="server">
??? <title>動態更改主題</title>
??? <script type="text/javascript" language="javascript">
??????? function changeTheme() {
??????????? //獲取當前所選的主題
??????????? var theme = document.getElementById('<%=DropDownList1.ClientID %>').value;
??????????? //重新加載當前畫面,并通過QueryString 傳遞所選中的主題
??????????? window.location = "ThemePage.aspx?theme=" + theme;
??????? }
??? </script>
</head>
<body>
??? <form id="form1" runat="server">
??? <div>
??????? 請選擇一個主題:<asp:DropDownList ID="DropDownList1" runat="server">
??????? <asp:ListItem Value="GrassGreen">草綠色</asp:ListItem>
??????? <asp:ListItem Value="SkyBlue">天藍色</asp:ListItem>
??????? </asp:DropDownList>
??????? <br />

????? <asp:Button ID="Button1" runat ="server" Text="更改主題" οnclick="Button1_Click" />
??????? <input type="button" value="更改主題(客戶端Button)" οnclick="changeTheme()" />
??? </div>
??? </form>
</body>
</html>

在.CS文件中

protected void Page_PreInit(object sender, EventArgs e)
??????? {
??????????? this.Theme = Request.QueryString["theme"] ?? "SkyBlue";
??????? }

第三種方案可以解決動態的改變主題。

個人總結,在讀取控件或者改變控件狀態時,必須考慮到頁面生命周期,這個也是學習ASP.NET必須記住的過程。

轉載于:https://www.cnblogs.com/fartherfuture/p/3505341.html

總結

以上是生活随笔為你收集整理的ASP.NET动态的修改主题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。