簡體   English   中英

如何在使用ASP.NET主題時強制CSS刷新?

[英]How to force CSS refresh when using ASP.NET Themes?

我正在使用ASP.NET主題的網站上工作。 我遇到的問題是我已經更新了CSS文件,但原始文件是由用戶的瀏覽器保存的。 我想知道是否有辦法強制瀏覽器獲取最新的CSS文件。

主題由類似於以下的代碼設置:

private void SetPageTheme()
{
    Page.Theme = "ClientA_Theme";
}

我已經看到了類似問題的其他答案,這些問題表明我在CSS文件中附加了一個版本號,例如/CssFile.css?v=1.2.3

有沒有辦法讓我用ASP.NET主題做到這一點?

我有類似的問題; 您可以設置IIS添加一個內容過期標頭的CSS文件,使他們永遠不會緩存,或者您可以使用此提出的解決方案,因此懷疑這里

您還可以為每個頁面添加一個方法,以遍歷page.header中的控件(甚至可能在您的Master.Page!中),執行以下操作:

protected override void OnPreRender(System.EventArgs e)    
{        
        foreach (Control link in Page.Header.Controls)        
        {                       
            if (link is HtmlLink)            
            {                  
                HtmlLink cssLink = link as HtmlLink;
                //Check if CSS link 
                if (cssLink.Attributes["type"].Equals("text/css", StringComparison.CurrentCultureIgnoreCase))                
                {                    
                    if (cssLink.Attributes["href"].Equals(String.Format("~/App_Themes/{0}/{0}.css", Page.Theme), StringComparison.CurrentCultureIgnoreCase))                    
                    {      
                        //perhaps add the version of your app here.                                                                
                        cssLink.Attributes["href"] += "?v1.1";                                          
                    }                
                }            
            }        
        }
        base.OnPreRender(e);     
    }

另一種技術是在主題名稱中包含版本號 - 例如MyTheme1_1或類似名稱。 然后,每個版本將從“新”URL加載內容,因此應該為每個用戶再次請求內容。 顯然,這是更多的工作,但每次發布應該是一次,並且沒有你在下面提到的開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM