Asp.net

使用 Asp.Net 主題時,如何強制瀏覽器重新載入記憶體的 CSS 文件?

  • February 4, 2013

可能重複:

App_Theme 文件夾中的 CSS 記憶體在瀏覽器中

我已經看到“什麼是強制瀏覽器重新載入記憶體的 CSS/JS 文件的優雅方式? ”但是那裡的答案使用 PHP,它沒有解決 CSS 是由 ASP.Net 主題動態注入的事實。

我想我有一個快速而骯髒的解決方案。訣竅是檢查頁眉中的控制項(例如在PreRender階段中),找到指向文件App_Themes夾下 CSS 文件的連結並使它們動態化(通過向查詢字元串添加一些隨機資訊)。這很可能會告訴瀏覽器使文件的記憶體版本無效。

編碼:

protected void Page_PreRender(object sender, EventArgs e)
{
   HtmlLink link = null;

   foreach (Control c in Header.Controls)
   {
       if (c is HtmlLink)
       {
           link = c as HtmlLink;

           if (link.Href.IndexOf("App_Themes/", StringComparison.InvariantCultureIgnoreCase) >= 0 &&
               link.Href.EndsWith(".css", StringComparison.InvariantCultureIgnoreCase))
           {
               link.Href += string.Format("?t={0}", DateTime.Now.Ticks.ToString());
           }
       }
   }
}

輸出:

   <link href="App_Themes/MyTheme/MyTheme.css?t=634310637798128189" 
       type="text/css" rel="stylesheet" />

請注意,您需要<head runat="server">在頁面的標記中聲明一個才能訪問該Header屬性(否則它將是null)。

引用自:https://stackoverflow.com/questions/4736867