1

What is the easiest way to set the contents of an <asp:ContentPlaceHolder> programmatically? I imagine ill have to do a Master.FindControl call?

Cœur
  • 37,241
  • 25
  • 195
  • 267
Anders
  • 12,088
  • 34
  • 98
  • 146

3 Answers3

4

If your page inherits from a MasterPage, then you should have an asp:Content control on your page with some id, like so:

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

You should be able to reference this in your codebehind and add whatever you want to it.

public void Page_Load( object sender, EventArgs e )
{
    HtmlContainerControl div = new HtmlGenericControl( "DIV" );
    div.innerHTML = "....whatever...";
    myContent.Controls.Clear();
    myContent.Controls.Add(div);
}
DATEx2
  • 3,585
  • 1
  • 24
  • 26
tvanfosson
  • 524,688
  • 99
  • 697
  • 795
  • I know this is old, but technically it should be new HtmlGenericControl("div"), HtmlContainerControl is abstract and can't be created (although you can cast the "div" variable to that type). – McGuireV10 Aug 03 '12 at 14:21
  • @McGuireV10 - thanks...and I am so glad I've left webforms behind. – tvanfosson Aug 03 '12 at 14:35
0

If you are adding controls to a blank page then you do Page.Controls.Add()....no?

dev.e.loper
  • 35,446
  • 76
  • 161
  • 247
0

I use a custom extension method that searches a control (a placeholder for example) recursively to find the control you're looking for by Id and return it. You can then populate the returned control as required. Call this in a foreach loop iterating over your list of controls to populate.

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;
    }
}
flesh
  • 23,725
  • 24
  • 80
  • 97