我正在尝试动态地将复选框添加到网页
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页面上做了哪些更改?请帮忙。
答案 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" >