Ответ 1
Одна мысль: нельзя ли использовать ClientScriptManager.RegisterClientScriptBlock для вставки импорта css файла?
Что-то вроде (не проверено):
if(! Page.ClientScript.IsClientScriptBlockRegistered("MyWebControl.ascx.css"))
{
Page.ClientScript.RegisterClientScriptBlock(this.getType(),"MyWebControl.ascx.css",@"<style type=""text/css"" src=""MyWebControl.ascx.css""></style>");
}
Отредактировано для изменения RegisterStartupScript
на RegisterClientScriptBlock
В соответствии с вашими изменениями:
- RegisterStartupScript (тип, ключ, script)
- RegisterClientScriptBlock (тип, ключ, script)
Разница между этими двумя методами заключается в том, что каждый из них испускает блок script. RegisterClientScriptBlock()
испускает блок script в начале веб-формы (сразу после тега), а RegisterStartupScript()
выделяет блок script в конце веб-формы (прямо перед тегом).
Чтобы лучше понять, почему существуют два разных метода для испускания клиентской стороны script, убедитесь, что клиентская сторона script может быть разделена на два класса: код, который предназначен для немедленного запуска при загрузке страницы и код, который предназначен для запуска при возникновении какого-либо события на стороне клиента. Общим примером кода, который предназначен для запуска при загрузке страницы, является клиентский код, предназначенный для установки фокуса на текстовое поле. Например, когда вы посещаете Google, при загрузке страницы выполняется небольшой бит клиентского кода, чтобы автоматически установить фокус на текстовое поле поиска.
http://msdn.microsoft.com/en-us/library/aa478975.aspx#aspnet-injectclientsidesc_topic2
Изменить: из ваших комментариев я предполагаю, что это, к сожалению, так не работает. Посмотрите на следующие ссылки:
- http://forums.asp.net/t/557140.aspx/1?CSS+stylesheet+in+ascx+file/?post=2692177
- http://nathanaeljones.com/146/referencing-stylesheets-scripts-from-content-pages/
Возможно, существуют некоторые подходы к работе
В качестве подсказки вы можете программно создать HtmlLink в Page_Init-Handler вашего UserControl:
Dim objLink As New HtmlLink();
objLink.ID = "MyWebControlascxcss";
objLink.Attributes("rel") = "stylesheet";
objLink.Attributes("type") = "text/css";
objLink.Href ="~/filname.css";
Page.Header.Controls.Add(objLink);
Нельзя сначала проверять рекурсивную функцию, если ссылка уже добавлена в Page.Header.Controls-
Collection.