繁体   English   中英

如何在ASPX页面上始终获取最新版本的JS CSS?

[英]How to always get latest version of JS CSS on your ASPX page?

我遇到了一个问题,其中我正在为我的网站部署新版本,并且由于旧的CSS和JS文件仍保留在用户浏览器缓存中,因此该网站预期的新外观全部消失了。

通过网络搜索为我提供了很多解决方案,但是,每个解决方案都需要花费很多精力来更改每个ASPX / ASCX以及要使用CSS和JS文件的其他文件中的链接。

没有通用的解决方案,我只能调用一次代码,此问题已解决。

我感到非常需要一些通用代码,这些代码可以一劳永逸地解决我的问题。

我写了一个简单的扩展,如下所示:

  public static class PageExtension
{   
 public static IList<T> GetAllControlsRecursive<T>(this Control control) where T : Control
    {
        var rtn = new List<T>();
        foreach (Control item in control.Controls)
        {
            var ctr = item as T;
            if (ctr != null)
            {
                rtn.Add(ctr);
            }
            if (item.HasChildren())
            {
                rtn.AddRange(GetAllControlsRecursive<T>(item));
            }

        }
        return rtn;
    }     
    public static void SetPageLinks(this Control page)
    {
        if (page is Page p | page is MasterPage mp | page is UserControl uc)
        {
            var listLinks = page.GetAllControlsRecursive<HtmlLink>();
            foreach (var link in listLinks)
            {
                link.Attributes["href"] = $"{page.ResolveUrl(link.Attributes["href"])}?v={ MyAppConstant.GetVersion}";
            }
            var listServerLinks = page.GetAllControlsRecursive<HtmlGenericControl>();
            foreach(var link in listServerLinks)
            {
                if(link.Attributes["href"] !=null && !link.Attributes["href"].Contains(MyAppConstant.GetVersion))
                {
                    link.Attributes["href"] = $"{page.ResolveUrl(link.Attributes["href"])}?v={ MyAppConstant.GetVersion}";
                }
            }
        }
    }        
}

将PageExtension添加到我的Web应用程序中之后,我只需要在母版页或Page的Page_Load中调用一次该方法即可。

请随时改进我的代码,并在同一地方分享您的评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM