У нас есть веб-приложение ASP.NET. В этом случае для решения проблемы с кэшированием .css мы используем следующий код в PreRender в BasePage:
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». Есть ли способ отобразить все файлы .js, добавленные на конкретной странице .aspx, с помощью кода позади. я хочу обработать это где-нибудь, как вышеупомянутый код, который я использовал в pre handle.
Кто-нибудь еще сталкивался с подобным сценарием?
Все предложения очень ценятся.
Спасибо.