asp.net - 使用 ASP.NET 主题时如何强制刷新 CSS?

标签 asp.net css themes

我正在开发一个使用 ASP.NET 主题的网站。我遇到的问题是我已经更新了 CSS 文件,但原始文件被用户的浏览器保留。我想知道是否有办法强制浏览器获取最新的 CSS 文件。

主题由类似于以下的代码设置:

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

我看过类似问题的其他答案,这些答案建议我将版本号附加到 CSS 文件,例如/CssFile.css?v=1.2.3

有没有办法用 ASP.NET 主题来做到这一点?

最佳答案

我遇到了类似的问题;您可以设置 IIS 以添加 content-expiration header用于 CSS 文件,因此它们永远不会被缓存,或者您可以使用此 SO 问题中提供的解决方案 here

您还可以向每个页面添加一个方法来遍历 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 或类似名称。然后每个版本都会从"new"url 加载内容,因此应该为每个用户再次请求内容。显然,这是更多的工作,但每个版本应该一次,并且没有您在下面提到的开销。

关于asp.net - 使用 ASP.NET 主题时如何强制刷新 CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8398610/

相关文章:

asp.net - 进入主站前先注册

c# - 合并 List<> 并保持同一性

html - <a> 标签小于子标签

html - 如何在文本框获得焦点时显示任何 div?

css - yii2 导航小部件子菜单类

android - 基于主题的LinearLayout背景

c# - 学习 .NET Web 服务的最佳资源是什么?

c# - 将 StructureMap 与单元测试结合使用

css - 如何自定义 Zurb Foundation 4 SCSS 组件?

eclipse - Eclipse 的最小主题