2011-06-01 85 views
2

我有一個webdev問題動態更改CSS文件

我有近10,000個服務器端頁面,所有這些使用相同的樣式表。我創建了一個新的服務器端頁面,它就像一個動態菜單系統,可以幫助快速輕鬆地從現有的10,000頁中找到特定頁面。

問題是,如果使用舊菜單系統以舊方式訪問服務器端頁面,則應保留舊的樣式表。但是,如果通過新的菜單系統訪問它們,則應使用新的刷新樣式表。

編輯10,000''頁似乎不是一個好的選擇。解決這個問題的最好方法是什麼?

+0

在php的情況下,我會在所有頁面中創建一個文件幷包含所有頁面,然後在一個頁面中更改反映在所有頁面中。 – amolv 2011-06-01 09:42:31

+0

嗨Oshirowanen。你能澄清一些事情嗎?新舊頁面是否按不同規格構建?即。他們是否使用不同的模板類型等,所有這些頁面都使用相同的模板/ master_page。另外,它們是否都來自同一個域名(新舊)?對不起,但我無法得到你想要的問題。你是否有一些兩種頁面類型的例子。祝你好運! – BizNuge 2011-06-01 09:47:35

+0

如何找到請求是來自舊菜單還是新菜單 – 2011-06-01 09:48:47

回答

2

將樣式表放在app_themes文件夾中,並在web.config中進行設置。那麼你可以快速地在兩者之間切換。或者你可以在pre_init事件中設置此代碼

編輯: 1:添加和App_Themes文件夾,創建主題名稱(例如,默認或藍色等)

2兩個子文件夾:無論是在網絡.config設置或

3:捕獲您希望更改的每個頁面的page_init(或者對於母版頁面和大量頁面具有基本頁面類並覆蓋page_init)並將Page.Theme =設置爲主題你要。從我所知道的最好的會話狀態保存。因此,像這樣:

if (Session["Theme"] == null) 
    { 
    //the string is the theme as per the cleaners default 
    string chosenTheme = selectedTheme(); 
    Session.Add("Theme", chosenTheme); 
    Page.Theme = ((string)Session["Theme"]); 
    } 
    //if the page is reloaded. 
    else 
    { 
    Page.Theme = ((string)Session["Theme"]); 
    } 

希望這有助於陛下

+0

您能否介紹一下這2個選項的更多細節。可能鏈接到文檔? – oshirowanen 2011-06-01 09:42:50

+0

[這是關於主題的討論](http://msdn.microsoft.com/en-us/library/ykzx33wh.aspx),包括在web.config中設置它們以及它們的優先級解釋。我認爲這可能是要走的路。 – DOK 2011-06-01 10:02:47

+0

因此,基本上,我可以使用主題根據網頁的請求方式更改樣式表,例如,如果old_domain.com/menu.aspx請求10,000頁中的1個,爲10,000頁使用oldstyle.css,如果1 10,000個頁面是由new_domain.com/menu.aspx請求的,對於10,000個頁面使用newstyle.css。可以這樣做嗎? – oshirowanen 2011-06-01 10:20:26

0

如果你不能寫一些全球服務器端代碼,也沒有對所有的10.000頁面全局模板,我的第一個想法是有一個網址 - 根據特定的url參數重寫CSS文件。所以你可以有一個第二個CSS文件,如果這個參數被提交,那麼這個文件將被提供,如果不是這個重寫將會提供原始的css文件。

+0

我可以編寫全球服務器端代碼,但是如何將它與舊的10,000頁相關聯?另外,如果我確實使用了url-rewrite,那麼如何獲得舊的10,000頁來識別url中的更改,而無需編輯這10,000頁中的每一個? – oshirowanen 2011-06-01 09:50:37

0

通常情況下,ID已經建議URL重寫,以便將舊樣式的請求重定向到新的。 (IIS可以做到這一點,例如:http://www.iis.net/download/URLRewrite

+0

如果我確實使用了url-rewrite,那麼如何獲取舊的10,000頁來識別url中的更改,而無需編輯這10,000頁中的每一個? – oshirowanen 2011-06-01 09:51:01

+0

如果你的舊文件是\ menu.css,並且新是\ newmenu.css,你將\ menu.css的請求重寫爲\ newmenu.css,說明和信息在我添加的鏈接上作爲例子,還有其他的爲IIS。它與搜索一樣好,並用新名稱替換文件。 – BugFinder 2011-06-01 09:53:03

+0

所以基本上只是爲了確認,我可以使用iis url重寫規則來創建一個規則,如果使用舊菜單訪問10,000個頁面,則使用舊樣式表,但如果使用新菜單訪問10,000個頁面,請使用新的樣式表,儘管菜單和10,000頁都在同一臺服務器上,但新菜單的域名不同。 – oshirowanen 2011-06-01 10:09:26

0

以下頁面可能對您有用Oshirowanen。

http://blogs.msdn.com/b/dotnetinterop/archive/2008/06/18/rewriting-urls-on-iis5-iis6-or-iis7-mod-rewrite-on-iis.aspx

我用Google搜索周圍的mod_rewrite風格選項IIS6,這出現了。它是從2008年開始的,但似乎至少圍繞着你在iis6環境中尋找的東西,而且,我希望你可以設置某種訪問規則,以便將某個域上的客戶端重定向到某些域新指定的css文件夾/資產。