 Статус: Продвинутый Зарегистрирован: 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?
Спасибо)
|
|
|
|
|
|
 Статус: Профессионал Зарегистрирован: 10.08.2008(UTC) Сообщений: 928  Откуда: Ukraine Сказал «Спасибо»: 13 раз Поблагодарили: 141 раз в 138 постах
|
Что мешает загрузить Ваш UserControl динамически и добавить в head? Код:
Control yourControl = LoadControl("~/Path/to/YourControl.ascx");
Page.Header.Controls.Add(yourControl);
|
|
|
|
 Статус: Продвинутый Зарегистрирован: 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? Однозначный вариант - динамическая подгрузка?
|
|
|
|
 Статус: Профессионал Зарегистрирован: 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)
|
|
 Статус: Продвинутый Зарегистрирован: 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);
}
}
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.