0

我正在创建一个按钮并将其添加到面板

        Panel p = new Panel();
        p.ID = "b_con";
        p.Attributes.Add("runat", "server");
        this.Controls.Add(p);
        Button b = new Button();
        b.Attributes.Add("value", "reply");
        b.Attributes.Add("id", Convert.ToInt32(r["Message_ID"]).ToString());
        b.Attributes.Add("class", "button");
        b.Click += new System.EventHandler(button_Click);
        p.Controls.Add(b);

我收到此错误“按钮”类型的控件“ctl01”必须放在带有 runat=server 的表单标记内。

4

2 回答 2

3

您要添加它的页面需要有这个。而且您的面板必须位于表单标签内。

<body>
<form runat="server">

<!-- Panel must be added within here -->
<div id="messages_con">
    <asp:Panel id="b_con" runat="server" />
</div>

</form>
</body>

因此,您将其添加到的面板需要在您的 Html 代码中。您正在向页面上不存在的面板添加一个按钮。相反,请参考 Html 中的面板(如上所示),如下所示:

Panel p = b_con;
//p.ID = "b_con";
//p.Attributes.Add("runat", "server"); -- Not necessary
this.Controls.Add(p);
Button b = new Button();
b.Attributes.Add("value", "reply");
b.Attributes.Add("id", Convert.ToInt32(r["Message_ID"]).ToString());
b.Attributes.Add("class", "button");
b.Click += new System.EventHandler(button_Click);
p.Controls.Add(b);
于 2012-10-04T20:18:34.893 回答
0

使用 Form.Controls.Add(p);

通过使用它,我们可以在表单标签上添加面板。

于 2012-10-05T06:48:40.850 回答