1

<asp:ContentPlaceHolder>以编程方式设置内容的最简单方法是什么?我想生病必须Master.FindControl打电话?

4

3 回答 3

4

如果您的页面继承自 MasterPage,那么您的页面上应该有一个带有一些 id 的 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);
}
于 2008-11-15T04:08:48.323 回答
0

我使用自定义扩展方法递归搜索控件(例如占位符)以通过 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;
    }
}
于 2008-11-15T09:07:02.293 回答
0

如果要向空白页添加控件,则执行 Page.Controls.Add()....不是吗?

于 2008-11-14T19:06:41.257 回答