Установить ASP: ContentPlaceHolder Content программно - PullRequest
1 голос
/ 14 ноября 2008

Какой самый простой способ установить содержимое <asp:ContentPlaceHolder> программным способом? Я полагаю, мне нужно сделать Master.FindControl звонок?

Ответы [ 3 ]

4 голосов
/ 15 ноября 2008

Если ваша страница наследуется от MasterPage, то на вашей странице должен быть элемент управления asp: Content с некоторым идентификатором, например:

<asp:Content runat="server" ID="myContent" ContentPlaceHolderID="masterContent">
</asp:Content>

Вы должны иметь возможность ссылаться на это в своем коде и добавлять к нему все, что вы хотите.

public void Page_Load( object sender, EventArgs e )
{
    HtmlContainerControl div = new HtmlGenericControl( "DIV" );
    div.innerHTML = "....whatever...";
    myContent.Controls.Clear();
    myContent.Controls.Add(div);
}
0 голосов
/ 15 ноября 2008

Я использую пользовательский метод расширения, который рекурсивно ищет элемент управления (например, заполнитель), чтобы найти элемент управления, который вы ищете по Id, и вернуть его. Затем вы можете заполнить возвращенный элемент управления по мере необходимости. Вызовите это в цикле foreach, перебирая список элементов управления для заполнения.

public static class ControlExtensions
{
    /// <summary>
    /// recursive control search (extension method)
    /// </summary>
    public static Control FindControl(this Control control, string Id, ref Control found)
    {
        if (control.ID == Id)
        {
            found = control;
        }
        else
        {
            if (control.FindControl(Id) != null)
            {
                found = control.FindControl(Id);
                return found;
            }
            else
            {
                foreach (Control c in control.Controls)
                {
                    if (found == null)
                        c.FindControl(Id, ref found);
                    else
                        break;
                }

            }
        }
        return found;
    }
}
0 голосов
/ 14 ноября 2008

Если вы добавляете элементы управления на пустую страницу, тогда вы делаете Page.Controls.Add () .... нет?

...