1

我正在尝试将复选框动态添加到网页

            string[] words = masg.Split('~');
            int size = words.Length;
            CheckBox[] cbl = new CheckBox[size];
            for (int i = 0; i < words.Length; i++)
            {
                cbl[i] = new CheckBox();
                cbl[i].Text = words[i].ToString();
                this.Controls.Add(cbl[i]);  
               // Response.Write("\n" + words[i]);
            }

我收到错误

“CheckBox”类型的控件“ctl01”必须放在带有 runat=server 的表单标记内。

我应该如何进行?在 aspx 页面上进行哪些更改?请帮忙。

4

2 回答 2

3

您应该将其更改为添加表单,因为this正在引用您的页面。并且您正在以编程方式创建或通过在页面上添加的任何服务器控件runat="server"都应放置在表单标记内。

喜欢

this.Form.Controls.Add(cbl[i]);

或在表单上放置一个占位符或面板。而且你可以添加它

喜欢

placeholder1.Controls.Add(cbl[i]); 

如果您的 .aspx 不包含表单标签,那么您应该在那里放置一个表单标签

喜欢

<form runat="server" id="form1">

 //Other mark up or server controls.

</form>
于 2012-10-30T07:46:38.117 回答
2

嗨,您需要在表单上添加一个父控件,例如 Panel,然后将您的复选框控件添加到该面板

string[] words = masg.Split('~');
        int size = words.Length;
        CheckBox[] cbl = new CheckBox[size];
        for (int i = 0; i < words.Length; i++)
        {
            cbl[i] = new CheckBox();
            cbl[i].Text = words[i].ToString();
            pnlControls.Controls.Add(cbl[i]); 
           // Response.Write("\n" + words[i]);
        }

在您的 aspx 页面中添加面板控件:

<asp:Panel ID="pnlControls" runat="server" >
于 2012-10-30T07:51:37.757 回答