У меня есть ситуация, когда я хотел бы добавить "последнюю модифицированную" метку времени к путям моих js-файлов (например, "custom.js? 2009082020091417"), на которые есть ссылки в моем ScriptManager (содержится в моей MasterPage) и в любых ScriptManagerProxies (контентных страницах).
Я могу легко получить доступ к ScriptManager в коде, а затем перебрать его коллекцию Scripts, чтобы получить пути сценариев, которые я установил декларативно, и затем «установить» новый путь с привязкой «? [Lastmodifiedtimestamp]».
Проблема в том, что я не могу понять, как добраться до любых ScriptManagerProxies, которые могут существовать.
При отладке я вижу прокси в закрытых членах (._proxies). Я просмотрел документацию и не вижу, где вы можете публично получить доступ к этой коллекции.
Я что-то упускаю?
У меня есть следующий код в базовом классе события Page_PreRenderComplete моей страницы содержимого:
ScriptManager sm = ScriptManager.GetCurrent((Page)this);
if(sm != null)
{
foreach (ScriptReference sr in sm.Scripts)
{
string fullpath = Server.MapPath(sr.Path);
sr.PathWithVersion(fullpath); //extension method that sets "new" script path
}
}
Приведенный выше код дает мне один сценарий, который я определил в моей MasterPage, но не два других сценария, которые я определил в ScriptManagerProxy моей страницы содержимого.