C# 无法访问页面加载方法上的服务器控制

C# 无法访问页面加载方法上的服务器控制,c#,asp.net,C#,Asp.net,我在我的aspx页面的html表格中有占位符,如下所示: <div id="div1" runat="server" onmouseover="divexpand()" onmouseout="collapsediv()"> <span id="sp"><i>Status:</i></span> <div id="div2" style="display:block;"> <ta

我在我的aspx页面的html表格中有占位符,如下所示:

<div id="div1" runat="server" onmouseover="divexpand()" onmouseout="collapsediv()">
    <span id="sp"><i>Status:</i></span>
        <div id="div2" style="display:block;">
        <table style="padding:10px;">
            <tbody><tr>
                <td>A:</td>
                <td>
                    <asp:PlaceHolder ID="ph1" runat="server"></asp:PlaceHolder>
                </td>
                <td>
                    <asp:PlaceHolder ID="ph2" runat="server"></asp:PlaceHolder>
                </td>
            </tr>
         </tbody>
        </table>
    </div>
protected void Page_Load(object sender, EventArgs e)
    {
        PlaceHolder ph1 = Page.FindControl("ph1") as PlaceHolder;
        PlaceHolder ph2 = Page.FindControl("ph2") as PlaceHolder;
        ph1.Controls.Add(new LiteralControl("<b><i>TEST</i></b>"));
        ph2.Controls.Add(new LiteralControl("<b><i>TEST</i></b>"));
    }

地位:
A:
我正在尝试使用page.FindControl(id)方法访问page_load method code behind上的占位符“ph1”和“ph2”,如下所示:

<div id="div1" runat="server" onmouseover="divexpand()" onmouseout="collapsediv()">
    <span id="sp"><i>Status:</i></span>
        <div id="div2" style="display:block;">
        <table style="padding:10px;">
            <tbody><tr>
                <td>A:</td>
                <td>
                    <asp:PlaceHolder ID="ph1" runat="server"></asp:PlaceHolder>
                </td>
                <td>
                    <asp:PlaceHolder ID="ph2" runat="server"></asp:PlaceHolder>
                </td>
            </tr>
         </tbody>
        </table>
    </div>
protected void Page_Load(object sender, EventArgs e)
    {
        PlaceHolder ph1 = Page.FindControl("ph1") as PlaceHolder;
        PlaceHolder ph2 = Page.FindControl("ph2") as PlaceHolder;
        ph1.Controls.Add(new LiteralControl("<b><i>TEST</i></b>"));
        ph2.Controls.Add(new LiteralControl("<b><i>TEST</i></b>"));
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
占位符ph1=页面。FindControl(“ph1”)作为占位符;
占位符ph2=页面。FindControl(“ph2”)作为占位符;
ph1.控件。添加(新的文字控件(“测试”));
ph2.控制。添加(新的文字控制(“测试”));
}

但我无法访问占位符。如有任何帮助,将不胜感激。

您应该在无页面的情况下从代码隐藏向添加控件。FindControl在此上下文中无需使用FindControl。使用各自的ID直接从代码隐藏中访问占位符控件。

为什么要使用FindControl?是否仅使用ID无法访问它们?为什么不能通过
ID
直接访问它们?@cstruter如果同一控件位于任何列表控件(如
GridView
)中,则需要查找控件,
ListView
…@ChrisBint:正如您所建议的,可以使用其ID直接访问该控件。Thanks@user3240361在这种情况下添加了适当的答案。