动态添加复选框到asp.net

时间:2012-10-30 07:43:34

标签: c# asp.net

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

            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页面上做了哪些更改?请帮忙。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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页面中添加一个panle控件:

<asp:Panel ID="pnlControls" runat="server" >