asp.net - 使用 Asp.Net 主题时如何强制浏览器重新加载缓存的 CSS 文件?

标签 asp.net css themes browser-cache

<分区>

Possible Duplicate:
CSS in App_Theme folder gets Cached in Browser

我见过“What is an elegant way to force browsers to reload cached CSS/JS files?”,但那里的答案使用 PHP,它没有解决 CSS 由 ASP.Net 主题动态注入(inject)这一事实。

最佳答案

我想我有一个快速而肮脏的解决方案。诀窍是检查页眉中的控件(例如在 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 )。

关于asp.net - 使用 Asp.Net 主题时如何强制浏览器重新加载缓存的 CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736867/

相关文章:

angular - Angular Material 主题只有浅色还是深色?

javascript - 在 C# ASP.Net 应用程序中使用 JavaScript 淡入淡出(闪烁)文本

asp.net - 如何从ASP.NET MVC中的枚举创建下拉列表?

c# - 创建动态表时应用 Css 样式

jquery - 图像调整大小和裁剪以适合父 div

css - HTML5 视频标签的宽度和高度

html 将光标样式更改为钢笔

php - 如何使水平导航菜单居中对齐

asp.net - 绕过路径遍历过滤器

html - 图像和文本定位