繁体   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