Сообщество русскоговорящих пользователей
CMS DotNetNuke
   Вы здесь:  Форум
Добро пожаловать, Гость. Чтобы воспользоваться всеми функциями форума - зарегистрируйтесь или аутентифицируйтесь.
Влад Offline
#1 Оставлено : 9 августа 2012 г. 17:02:22(UTC)
Влад

Статус: Продвинутый

Зарегистрирован: 12.08.2011(UTC)
Сообщений: 83
Откуда: N/A

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 1 раз в 1 постах
Здравствуйте!

Встраиваю прибамбас через UserControl

Но в примере, по установке прибамбаса, есть теги:
<head runat="server">
<meta name="viewport" content="width=device-width" />

<qf:HeadTag ID="Headtag1" runat="server"></qf:HeadTag>

<link rel="stylesheet" href="style.css" type="text/css" />
<link href="Honwe/Honwe.css" rel="stylesheet" type="text/css" />
</head>
<body class="BODY">
<form id="mainForm" method="post" runat="server">


вопрос такой:
при обычной разработке есть мастер страниц, который содержит эти теги и в мастер страниц встраивается UserControl.
А как быть в DNN?

Спасибо)
Реклама
balbes Offline
#2 Оставлено : 10 августа 2012 г. 9:31:36(UTC)
balbes

Статус: Профессионал

Зарегистрирован: 10.08.2008(UTC)
Сообщений: 928

Откуда: Ukraine

Сказал «Спасибо»: 13 раз
Поблагодарили: 141 раз в 138 постах
Что мешает загрузить Ваш UserControl динамически и добавить в head?
Код:

Control yourControl = LoadControl("~/Path/to/YourControl.ascx");
Page.Header.Controls.Add(yourControl);
Влад Offline
#3 Оставлено : 10 августа 2012 г. 12:19:18(UTC)
Влад

Статус: Продвинутый

Зарегистрирован: 12.08.2011(UTC)
Сообщений: 83
Откуда: N/A

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 1 раз в 1 постах
Автор: balbes Перейти к цитате
Что мешает загрузить Ваш UserControl динамически и добавить в head?
Код:

Control yourControl = LoadControl("~/Path/to/YourControl.ascx");
Page.Header.Controls.Add(yourControl);


само содержимое контрола я привяжу и напряму к контролу темы.
тут вопросов нет.

Вопрос в том, что в примере установки прибамбаса есть, например, тег body. он задается со свойствами ( в UserControl, как известно, такой тег недопустим)

Поэтому обычно, свойства в таких тегах устанавливал в MasterPage.
А как быть в DNN? Однозначный вариант - динамическая подгрузка?

balbes Offline
#4 Оставлено : 10 августа 2012 г. 14:43:11(UTC)
balbes

Статус: Профессионал

Зарегистрирован: 10.08.2008(UTC)
Сообщений: 928

Откуда: Ukraine

Сказал «Спасибо»: 13 раз
Поблагодарили: 141 раз в 138 постах
Я бы порекомендовал Вам почитать для начала немного мануалов для понимания сути вопроса.
Все модули и скины в DNN по сути являются UserControl-ами, которые динамически загружаются в Default.aspx, поэтому получить доступ к элементам Default.aspx можно только динамически, например
Код:

Control body = Page.GetControl("Body");    

public static class ControlExtensions
{
    public static IEnumerable<Control> Flatten(this ControlCollection controls)
    {
        List<Control> list = new List<Control>();
        controls.Traverse(c => list.Add(c));
        return list;
    }

    public static IEnumerable<Control> Flatten(this ControlCollection controls, Func<Control, bool> predicate)
    {
        List<Control> list = new List<Control>();
        controls.Traverse(c => { if (predicate(c)) list.Add(c); });
        return list;
    }

    public static void Traverse(this ControlCollection controls, Action<Control> action)
    {
        foreach (Control control in controls)
        {
            action(control);
            if (control.HasControls())
            {
                control.Controls.Traverse(action);
            }
        }
    }

    public static Control GetControl(this Control control, string id)
    {
        return control.Controls.Flatten(c => c.ID == id).SingleOrDefault();
    }

    public static IEnumerable<Control> GetControls(this Control control)
    {
        return control.Controls.Flatten();
    }

    public static IEnumerable<Control> GetControls(this Control control, Func<Control, bool> predicate)
    {
        return control.Controls.Flatten(predicate);
    }
}
 1 пользователь поблагодарил balbes за этот пост.
Влад оставлено 10.08.2012(UTC)
Влад Offline
#5 Оставлено : 10 августа 2012 г. 17:16:03(UTC)
Влад

Статус: Продвинутый

Зарегистрирован: 12.08.2011(UTC)
Сообщений: 83
Откуда: N/A

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 1 раз в 1 постах
Отлично. вот теперь все понятно)

Автор: balbes Перейти к цитате
Я бы порекомендовал Вам почитать для начала немного мануалов для понимания сути вопроса.
Все модули и скины в DNN по сути являются UserControl-ами, которые динамически загружаются в Default.aspx, поэтому получить доступ к элементам Default.aspx можно только динамически, например
Код:

Control body = Page.GetControl("Body");    

public static class ControlExtensions
{
    public static IEnumerable<Control> Flatten(this ControlCollection controls)
    {
        List<Control> list = new List<Control>();
        controls.Traverse(c => list.Add(c));
        return list;
    }

    public static IEnumerable<Control> Flatten(this ControlCollection controls, Func<Control, bool> predicate)
    {
        List<Control> list = new List<Control>();
        controls.Traverse(c => { if (predicate(c)) list.Add(c); });
        return list;
    }

    public static void Traverse(this ControlCollection controls, Action<Control> action)
    {
        foreach (Control control in controls)
        {
            action(control);
            if (control.HasControls())
            {
                control.Controls.Traverse(action);
            }
        }
    }

    public static Control GetControl(this Control control, string id)
    {
        return control.Controls.Flatten(c => c.ID == id).SingleOrDefault();
    }

    public static IEnumerable<Control> GetControls(this Control control)
    {
        return control.Controls.Flatten();
    }

    public static IEnumerable<Control> GetControls(this Control control, Func<Control, bool> predicate)
    {
        return control.Controls.Flatten(predicate);
    }
}


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



 
OpenedBorderBoxed Small width layoutMedium width layoutMaximum width layout Small textMedium textMaximum text