C# 以编程方式添加动态命名的复选框

C# 以编程方式添加动态命名的复选框,c#,asp.net,.net,C#,Asp.net,.net,我正在以编程方式尝试向div添加具有唯一ID的复选框: foreach (var item in tweetList) { Panel tweetPanel = new Panel(); tweetPanel.BorderColor = System.Drawing.Color.Black; tweetPanel.BorderWidth = 1; tweetPanel.

我正在以编程方式尝试向div添加具有唯一ID的复选框:

        foreach (var item in tweetList)
        {
            Panel tweetPanel = new Panel();
            tweetPanel.BorderColor = System.Drawing.Color.Black;
            tweetPanel.BorderWidth = 1;
            tweetPanel.Attributes["style"] = "padding: 20px; margin 20px; width: 20%;"; 
            tweets.Controls.Add(tweetPanel);
            CheckBox tweetChecker = new CheckBox();
            tweetChecker.ID = "checkBox" + count;
            tweetPanel.Controls.Add(tweetChecker);
            tweetPanel.Controls.Add(new LiteralControl("<img src=\"" + item.profileImageUrl + "\">"));
            count++;
        }
foreach(tweetList中的变量项)
{
面板tweetPanel=新面板();
tweetPanel.BorderColor=System.Drawing.Color.Black;
tweetPanel.BorderWidth=1;
tweetPanel.Attributes[“style”]=“padding:20px;margin:20px;width:20%;”;
tweets.Controls.Add(tweetPanel);
CheckBox tweetChecker=新建复选框();
tweetChecker.ID=“checkBox”+计数;
tweetPanel.Controls.Add(tweetChecker);
tweetPanel.Controls.Add(新的LiteralControl(“”);
计数++;
}
在本分部:

    <div id="tweets" runat="server">
    </div>

但当我运行它时,它会说:

“CheckBox”类型的控件“checkBox0”必须放置在runat=server的表单标记中


为什么以编程方式创建的复选框不被视为服务器端?如何解决此问题?控件需要位于表单元素中,以便在提交表单时将其发布到服务器

<form id="myForm" runat="server">
    <!-- your controls -->
    <div id="tweets" runat="server">
    </div>
</form>


如果控件不会导致回发,则只能在表单元素外部添加控件。

在服务器上使用表单运行包装div,asp.net需要表单中的所有服务器端控件该复选框被视为服务器端控件。但您不能将其放在服务器端表单中。