2011-05-07 32 views
1

我有一個皮膚文件<%@Page Theme="Theme1"%>2個皮膚文件在Asp.net中的1頁

我有兩個按鈕。一個用於Theme1.skin,另一個用於Theme2.skin。

如果我按下按鈕1,主題應改爲Theme1.skin

如果我按下按鈕2,他們應改爲Theme2.skin

我按鈕1的單擊事件wroete這Page.Theme="Theme1";

然後,我被告知,只能寫在PreInit方法。

有什麼想法?

回答

1

聽聽你被告知了什麼。您需要在頁面生命週期的PreInit中設置主題。之後,這是不可能的

This可能會讓你在正確的方向解決你的問題。評論也很好讀。更確切地說this評論。

1

您可以嘗試在會話中,力刷新頁面設置主題名稱,並在page_init加載

protected void Page_PreInit(object sender, EventArgs e) 
{ 
     var themeName = Session["themeName"]; 
     if (thm != null) 
     { 
      Page.Theme = themeName.ToString() ; 
     } 
} 

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Session["themeName"] = "Theme1"; 
     Server.Transfer(Request.FilePath); 

    } 

同樣,對於將Button2的Click,設置會話對象「THEME2 「

+0

另一種方法是隻在ajax中做同樣的事情。在按鈕上單擊您設置它們的會話變量,然後通過javascript刷新頁面。這將確保你不會有2個頁面刷新可見的用戶 – 2011-05-07 01:02:50

+0

是的,我知道這種方式..但有一個更好的方法.. – william 2011-05-07 01:05:55