Элемент управления <DNN: ICON> не поддерживает CssClass

1

Реализация контейнера, который использует значок стандарта DotNetNuke.

<%@ Control AutoEventWireup="false" Explicit="True"
            Inherits="DotNetNuke.UI.Containers.Container" %>
<%@ Register TagPrefix="dnn" TagName="icon" 
             Src="~/Admin/Containers/Icon.ascx" %>  

<dnn:icon id="dnnICON" runat="server" CssClass="img-circle" />

Это отображает HTML-модуль на страницу, но не передает имя класса css, поэтому изображение не используется.

Редактирование /admin/containers/icon.ascx.cs Я добавил следующий код:

namespace DotNetNuke.UI.Containers
{
  public partial class Icon : SkinObjectBase
  {
    public string CssClass { get; set; }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        try
        {
            if (!String.IsNullOrEmpty(CssClass))
            {
                imgIcon.CssClass = CssClass;
            }
        }
        catch (Exception exc)
        {
            Exceptions.ProcessModuleLoadException(this, exc);
        }
    }
}

Это имеет желаемый эффект передачи CSS-классов в HTML-модуль на странице и, похоже, ничего не сломал, но я обеспокоен тем, что, как только обновление перезапишет каталог администратора, все мои изменения будут уничтожены.

Есть ли правильный способ сделать это, используя файл в папках скинов? Могу ли я сделать это из контейнера?

Теги:
class
dotnetnuke
containers
partial

1 ответ

1
Лучший ответ

Я бы обернул элемент управления dnn: icon в DIV и настроил его таким образом.

<div class="dnnIcon"><dnn:icon id="dnnICON" runat="server" CssClass="img-circle" /></div>

то в вашем CSS что-то вроде

.dnnIcon IMG{ STYLE GOES HERE }

Вы правы, что такое изменение, которое у вас будет, будет потеряно во время следующего обновления DNN, если вы не измените его там.

Другим вариантом было бы отправить запрос Pull на GitHub на проект платформы dnn, чтобы увидеть, будет ли DNN Corp включать ваши изменения в будущую версию, чтобы вы могли настроить таргетинг на значок, не выполняя его вручную ни через код, ни через мой предложенный метод,

  • 1
    Для такого простого изменения весьма высока вероятность того, что ваш запрос на получение ответа будет принят. Смотрите dnn-connect.org/community/blogs/… для ознакомления с этим. Поскольку вы редактируете только один файл, вы, вероятно, можете сделать это через сам GitHub (нажмите кнопку «Изменить» на github.com/dnnsoftware/Dnn.Platform/blob/development/Website/… , которая создаст ветку и ветку, из которой Вы можете отправить запрос на получение)
  • 2
    Отличная документация на сайте dnn-connect @bdukes, спасибо. Я сделал первый шаг во вкладе с открытым исходным кодом и отправил запрос на извлечение, как предложил Крис. Есть теплое нечеткое чувство.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню