C# 控制';ctl02和x27;类型为';按钮';必须放置在runat=server的表单标记中
我在尝试以编程方式生成多个按钮时遇到了这个错误。我没有ctl02。。为什么我会犯这样的错误C# 控制';ctl02和x27;类型为';按钮';必须放置在runat=server的表单标记中,c#,asp.net,controls,C#,Asp.net,Controls,我在尝试以编程方式生成多个按钮时遇到了这个错误。我没有ctl02。。为什么我会犯这样的错误 Button pgs = new Button();//Create New Topic pgs.Width = 20; pgs.Command += obtainTopicsPerPage_Click; pgs
Button pgs = new Button();//Create New Topic
pgs.Width = 20;
pgs.Command += obtainTopicsPerPage_Click;
pgs.CommandName = tPage.ToString();
pgs.Text = tPage.ToString();
btns.Add(tPage.ToString());
buttons.Add(pgs);
我创建了几个按钮并在列表中循环(按钮)。然后我犯了一个错误:(……为什么
完整设计:
int maximumTopicPages;
int tPage;
int questionNumber=1;
Dictionary<string, List<DisplayAllQuestionsTable>> tPages;
List<Button> buttons = new List<Button>();
protected void Answer_Click(object sender, EventArgs e)
{
ViewState["SeekPressed"] = "pressed";
tPages = new Dictionary<string, List<DisplayAllQuestionsTable>>();
string subTopic = SubTopicDropDownList.SelectedItem.Value;
List<DisplayAllQuestionsTable> threadsByTopic = new List<DisplayAllQuestionsTable>();
List<string> btns = new List<string>();
foreach (var topicKeys in postsByTopic)
{
if (topicKeys.Key == subTopic)
{
foreach (var item in postsByTopic[topicKeys.Key])
{
questionNumber++;
maximumTopicPages++;
threadsByTopic.Add(item);//Adds All DisplayAllTables objects
//if there are 20 add a button.
if (maximumTopicPages == 20)
{
tPages.Add(tPage++.ToString(), threadsByTopic);//Add a number to the page each time, with a DisplayTable object
//new Button
Button pgs = new Button();//Create New Topic
pgs.Width = 20;
pgs.Command += obtainTopicsPerPage_Click;
pgs.CommandName = tPage.ToString();
pgs.Text = tPage.ToString();
btns.Add(tPage.ToString());
buttons.Add(pgs);
maximumTopicPages = 0;
threadsByTopic.Clear();
}
}//number of questions per page
if (!tPages.ContainsKey((questionNumber / 20).ToString()))
{
tPages.Add((questionNumber / 20).ToString(), threadsByTopic);//If A button is missing add it.
}
}
之后是否将按钮添加到页面?
此外,如果您没有为按钮指定ID,它们将以ctlXXX的形式自动提供一个ID。以后是否将按钮添加到页面? 此外,如果您没有为按钮指定ID,它们将以ctlXXX的形式自动提供ID。您必须检查“按钮”(我认为是占位符)是否位于div或带有runat=“server”的标记中 更新 如果我理解,你可以尝试以下方式:
HtmlForm form = new HtmlForm();
form.Attributes.Add("runat", "server");
form.Controls.Add(buttons);
Page.Controls.Add(form);
(未测试)您必须检查“按钮”(我认为是占位符)是否位于div或带有runat=“server”的标记中
更新
如果我理解,你可以尝试以下方式:
HtmlForm form = new HtmlForm();
form.Attributes.Add("runat", "server");
form.Controls.Add(buttons);
Page.Controls.Add(form);
(未测试)在.aspx文件中是什么?具体来说,“按钮”控件是什么?我猜它是一个占位符或面板或类似的东西。在这种情况下,您需要将其添加到.aspx文件中:
...
<body>
<form runat="server">
...
</form>
</body>
...
。。。
...
...
这应该可以解决问题
ASP.NET需要由服务器管理
标记,以便在页面上使用服务器端控件。如果页面上的某个位置已经有
标记,您只需将runat=“server”
添加到该标记,它就会修复该标记。(假设您尝试将动态创建的按钮添加到的“按钮”控件(占位符或面板或其他任何内容)本身位于…
标记之间。)在.aspx文件中是什么?具体来说,“按钮”控件是什么?我猜,它是一个占位符、面板或类似的东西。在这种情况下,您需要将其添加到.aspx文件中:
...
<body>
<form runat="server">
...
</form>
</body>
...
。。。
...
...
这应该可以解决问题
ASP.NET需要由服务器管理
标记,以便在页面上使用服务器端控件。如果页面上的某个位置已经有
标记,您只需将runat=“server”
添加到该标记,它就会修复该标记。(假设您试图将动态创建的按钮添加到的“按钮”控件(占位符、面板或其他任何东西)本身位于…
标记之间。)其工作状态
请将新的按钮控件从添加到
protected void btnsubmit_Click(object sender, EventArgs e)
{
Button objButton = new Button();
objButton.Text = "New Button";
objButton.ID = "randomButton";
form1.Controls.Add(objButton);
}
这里form1->表单名称可用于.aspx文件,objButton是按钮对象。它的工作
请将新的按钮控件从添加到
protected void btnsubmit_Click(object sender, EventArgs e)
{
Button objButton = new Button();
objButton.Text = "New Button";
objButton.ID = "randomButton";
form1.Controls.Add(objButton);
}
这里form1->表单名称可用于.aspx文件,objButton是按钮对象。什么是按钮?请发布表单设计?这是一个简单的列表。请参见上文什么是按钮?请发布表单设计?这是一个简单的列表。参见上文,我如何以编程方式在其周围放置div标记?如果发布aspx html pag我可以给你一个主意。我可以,问题是,我几乎什么都没有放在那里,一切都是通过编程生成的。我放了一个表,称它为“Table2”,然后做了Table2.Rows.Add(…和Page.Controls.Add(Table2).在表格单元格中我添加了所有按钮..表2.在服务器上运行一个页面只能有一个服务器端表单标记。-明白了。看看我是如何将我的按钮放在上面的表中的好吧,你已经有了一个表单!所以你不需要像我的回答中那样添加表单!我正在尝试查看你的代码!那么,我如何以编程方式在它们周围放置一个div标记?如果你发布你的aspx html页面我可以给你一个想法。我可以,问题是,我几乎什么都不放,一切都是通过编程生成的。我放了一个表,称它为“Table2”,然后做了Table2.Rows.Add(…和page.Controls.Add(Table2).在表格单元格中我添加了所有按钮..表2.在服务器上运行一个页面只能有一个服务器端表单标记。-明白了。看看我如何将按钮放入上面的表中好的,你已经有一个表单了!所以你不需要像我的回答中那样添加表单!我正在尝试查看你的代码!按钮是一个列表..我说我将它们输入到一个列表中..但我一直ady有一个表单在服务器上运行..但它无法修复..再次..按钮不是控件您无法分配
runat=“server”
属性有问题。您必须通过标记来分配它。Attributes集合告诉ASP.NET在发送到客户端的HTML中呈现哪些属性,并且只能处理在服务器上解释的标记。但是ASP.NET不知道它应该在服务器上解释标记,除非您添加runat=标记中的“服务器”
。按钮是一个列表..我说我将它们输入列表..但我已经在服务器上运行了一个表单..但它无法修复..再次..按钮不是控件您无法分配runat=“服务器“
属性有问题。您必须通过标记来分配它。Attributes集合告诉ASP.NET在发送到客户端的HTML中呈现哪些属性,并且只能处理在服务器上解释的标记。但是ASP.NET不知道它应该在服务器上解释标记,除非您添加runat。”=标记中的“服务器”
。你应该关心,因为你说“我没有ctl02..为什么我会犯那个错误?”。Locksfree解释了原因。如果你不指定ID,它们将以ctlXXX的形式自动分配。你应该关心,因为你说“我没有ctl02..为什么我会犯那个错误?”?“.Locksfree解释了原因。如果不指定ID,它们将以ctlXXX的形式自动分配。