Есть ли ClientScriptManager. RegisterClientScriptInclude, эквивалентный для CSS

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

11
задан Shawn Miller 10 September 2008 в 16:50
поделиться

6 ответов

Короткий ответ: нет. Вы могли, конечно, прокрутить свои собственные функции (как CMPalmer предполагает) взять встроенные ресурсы CSS (как Gulzar предлагает), и встройте их на странице.

Как вопрос лучшей практики, тем не менее, я не уверен, почему Вы хотели бы сделать это. При создании допускающего повторное использование управления, которое имеет большое моделирование CSS, мой совет был бы только к твердому коду именами классов в совместимый стандартами вывод управления и поставил бы управление, сопровождаемое предложенной таблицей стилей. Это дает Вашим пользователям/клиентам опцию переопределения Ваших предложенных стилей для установки их потребностям и в целом позволяет им справляться со своей установкой CSS, как они считают целесообразным.

Разделение стиля от разметки является Хорошей Вещью - Вы уже направляетесь вниз правильный путь в предотвращении различных встроенных атрибутов стиля ASP.NET, но необходимо взять все это путь и не допустить CSS в .dll.

7
ответ дан 3 December 2019 в 06:49
поделиться

Можно добавить ссылки-заголовки к файлам CSS в ASP.NET codebehind классы как это:

HtmlLink link = new HtmlLink();
link.Href = "Cases/EditStyles.css";
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
this.Header.Controls.Add(link);

Можно выполнить итерации посредством средств управления заголовком заранее, чтобы видеть, там ли это уже. Показанный пример от Page_Load в одном из моих проектов и в условном выражении, которое только добавляет EditStyles.css, если страница, как предполагается, находится в режиме "Edit".

Для ClientScriptManager. RegisterClientScriptBlock и ClientScriptManager. RegisterClientScriptResource, у них есть эквивалентные функции для проверки, если они были уже зарегистрированы (например, IsClientScriptrResourceRegistered).

7
ответ дан 3 December 2019 в 06:49
поделиться

Еще одна мысль: Вы могли бы хотеть считать "пространство имен" Вашими именами классов для предотвращения коллизий с общими именами классов, которые могли бы уже использовать потребители. Например.

<div class="SmillerControls_Toolbar">
    <a class="SmillerControls_Button" ...>...</a>
    ...
</div>

или Вы могли перенести все это в единственный класс "пространства имен" и затем записать Ваш CSS в это:

 <div class="SmillerControls">
     <div class="Toolbar">
          <a class="Button" ...>...</a>
     </div>
 </div>

Ваш CSS был бы похож

 div.SmillerControls div.Toolbar
 {
     ...
 }

 div.SmillerControls div.Toolbar a.Button
 {
     ...
 }
0
ответ дан 3 December 2019 в 06:49
поделиться

Я использовал файлы CSS в качестве Встроенных ресурсов.

2
ответ дан 3 December 2019 в 06:49
поделиться

Я использую

<asp:Literal id="cssliteral" runat="server" /> 

в head, а затем StringBuilder на PageLoad, который содержит динамический css скрипт.

StingBuilder str = new StringBuilder();
str.Append("<style type="text/css">");
str.Append(".myclass {background-color:#" + mycolor);
str.Append("</style>");

cssLiteral.Text = str.ToString();
0
ответ дан 3 December 2019 в 06:49
поделиться

Просто проверьте наличие зарегистрированного скрипта и если вы обнаружите, что его там нет, тогда вы узнаете, что это первый раз, когда ваш элемент управления создается. В этот момент вы можете просто перетащить на свою страницу буквальный элемент управления, указывающий на нужный вам файл css.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    With Page.ClientScript
        If Not .IsClientScriptIncludeRegistered("JQuery") Then 
            .RegisterClientScriptInclude("JQuery", "Scripts/jquery-1.4.2.min.js")
            Dim l As New Literal()
            l.Text = "<link href='Uploadify/uploadify.css' rel='stylesheet' type='text/css' />"
            sender.controls.add(l)
        End If
    End With
End Sub

Надеюсь, это кому-то поможет.

2
ответ дан 3 December 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: