Я написал немного кода, который помогает с управлением версиями js файлов. По существу это разворачивает текущий менеджер скриптов и добавляет путь к файлу JavaScript с md5 хешем файла. Так
<script src="../Javascript/Navigation.js" type="text/javascript"></script>
становится
<script src="../Javascript/Navigation.js?md5=70D2B4D1F236C7E340D9152B9E4102C3" type="text/javascript"></script>
Я думаю, что это - довольно общая вещь сделать (или варианты его). То, что я изо всех сил пытаюсь сделать, взять файлы CSS в app_themes папке и сделать то же.
Как я вхожу и изменяю ссылки CSS?
Для аккуратного введения этого поведения на странице можно использовать контрольный адаптер следующим образом:
public class PageAdapter : System.Web.UI.Adapters.PageAdapter
{
protected override void OnPreRender(System.EventArgs e)
{
foreach (var link in Page.Header.Controls.OfType<HtmlLink>().ToList())
if (link.Attributes["type"].Equals("text/css", StringComparison.OrdinalIgnoreCase))
if (link.Attributes["href"].Contains("/App_Themes/{0}/".Fill(Page.Theme), StringComparison.OrdinalIgnoreCase))
/* process link */
base.OnPreRender(e);
}
}
Вы можете подключить его, сохранив следующее как *. browser файл в папке App_Browsers:
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page"
adapterType="PageAdapter" />
</controlAdapters>
</browser>
</browsers>
В целом, я думаю Адаптеры управления являются мощным AOP-подобным механизмом для инъектирования поведения в жизненные циклы управления/страницы; их почти полностью игнорируют в пользу традиционного подкласса.
.Избегайте изобретать колесо дважды, используя вместо него Комбайны . Делает все, что вы просите, и даже больше!