ContentPlaceHolders: повторное содержание

Нет, вы не можете заставить DataGrid оборачиваться так, как вы этого хотите.

Для достижения желаемого эффекта потребуется создать пользовательский элемент управления.

10
задан brad 17 April 2009 в 13:05
поделиться

5 ответов

Как уже говорили другие, в зависимости от самого контента существуют ярлыки, которые можно использовать в зависимости от типа контента, который будет там.

Если, однако, вам нужно, чтобы «контент» был полностью функционирующим кодом asp.net, я бы предложил UserControl для каждой ContentPage, которая содержит сам контент, а затем вам нужно дублировать только одну строку кода.

Пример

Мастер-страница

<html>
    <body>
        <asp:ContentPlaceHolder ID="Foo" runat="server">
        </asp:ContentPlaceHolder>
        <!-- page content -->
        <asp:ContentPlaceHolder ID="Bar" runat="server">
        </asp:ContentPlaceHolder>
    </body>
</html>

Контент-страница

<asp:Content ID="Top" ContentPlaceHolderID="Foo" runat="server">
    <uc1:Page1Control id="page1Control1" runat="server" />
</asp:Content>
<asp:Content ID="Bottom" ContentPlaceHolderID="Bar" runat="server">
    <uc1:Page1Control id="page1Control2" runat="server" />
</asp:Content>
3
ответ дан 3 December 2019 в 22:39
поделиться

В зависимости от содержимого вы можете сделать это в коде. Если это просто HTML, просто поместите его в переменную и назначьте другой. Если у вас есть элементы управления, вы можете перебрать коллекцию элементов управления, создать дубликат элемента управления и поместить его в другую область. В любом случае второе местоположение не будет заполнителем содержимого, которое должно быть указано в div.

0
ответ дан 3 December 2019 в 22:39
поделиться

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

1
ответ дан 3 December 2019 в 22:39
поделиться

В случае, когда вы просто хотите повторить строку, это сработало для меня:

<asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 

На это можно сослаться в другом месте как:

<%  Dim title As LiteralControl = TitleContent.Controls.Item(0)
    Response.Write(title.Text)
%>

Нет гарантии, что это правильный образ действий, хотя :)

5
ответ дан 3 December 2019 в 22:39
поделиться

Эй, если кому-то все еще нужно решение для этого, вот что я сделал: Поместите его в файл кода на своей главной странице

protected override void RenderChildren(HtmlTextWriter writer)
{
    Control mainPlaceHolder = FindControl("MainContentPlaceHolder");
    Control doublePlaceHolder = FindControl("ContentDoublePlaceHolder");

    StringBuilder sb = new StringBuilder();

    using (StringWriter sw = new StringWriter(sb))
    using (HtmlTextWriter tw = new HtmlTextWriter(sw))
    {
        mainPlaceHolder.RenderControl(tw);
    }

    LiteralControl lc = new LiteralControl(sb.ToString());
    doublePlaceHolder.Controls.Add(lc);

    base.RenderChildren(writer);
}

Я не уверен в проблемах с производительностью здесь, но он определенно работает.

6
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

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