我们有一个ASP.NET Web应用程序。在此,我们为了处理.css缓存问题,在BasePage的PreRender中使用以下代码,
if (Page.Header != null)
{
foreach (Control currentLlink in Page.Header.Controls)
{
if (currentLlink is HtmlLink)
{
HtmlLink cssLink = currentLlink as HtmlLink;
if (cssLink.Attributes["type"].ToLower().Equals("text/css", StringComparison.CurrentCultureIgnoreCase))
{
if (cssLink.Attributes["href"].Contains(".css"))
{
cssLink.Attributes["href"] += "?v=" + ConfigurationManager.AppSettings["CSSFileVersion"];
}
}
}
}
base.OnPreRender(e);
}
现在我们有一个新要求来处理与上述相同的.js文件。我已经按照以下方式处理了
if (Page.Header != null)
{
foreach (Control currentLlink in Page.Header.Controls)
{
if (currentLlink is LiteralControl)
{
LiteralControl jsLink = currentLlink as LiteralControl;
if (((System.Web.UI.LiteralControl)currentLlink).Text.ToLower().Contains(".js"))
{
((System.Web.UI.LiteralControl)currentLlink).Text = ((System.Web.UI.LiteralControl)currentLlink).Text.ToLower().Replace(".js", ".js?v=" + ConfigurationManager.AppSettings["JSFileVersion"]);
}
}
}
}
使用以上代码,我们达到了上述要求。但是,某些.js文件不会使用此文件替换。某些.js链接甚至没有列为“ LiteralControl”。有没有一种方法可以通过后面的代码显示添加到特定.aspx页中的所有.js文件。我想像在预处理中使用上面的代码一样,在某个地方处理它。
还有其他人遇到过这样的情况吗? 非常感谢所有建议。
谢谢。