无法在asp.net中使用C#正确放置动态生成的文本框

无法在asp.net中使用C#正确放置动态生成的文本框,c#,asp.net,C#,Asp.net,我想加载一个aspx页面,页面旁边有一个文本框和一个按钮,文本框中有任何数值。单击文本框旁边的按钮时,我想生成另一组文本框,其中包含一个不重复的随机数和它旁边的一个按钮,如果我们单击最后生成的按钮,这将再次继续 在我的代码中,我得到了输出,但是,在我的输出中,页面被加载,它第一次显示一个包含“0”和一个按钮的文本框,但当我单击“生成”按钮时,它正在生成文本框和按钮,但它们被放置在第一个包含“0”的文本框和所有新生成的包含随机数的文本框的上方带按钮放置在第一个文本框上。我希望第一个文本框位于顶部,

我想加载一个aspx页面,页面旁边有一个文本框和一个按钮,文本框中有任何数值。单击文本框旁边的按钮时,我想生成另一组文本框,其中包含一个不重复的随机数和它旁边的一个按钮,如果我们单击最后生成的按钮,这将再次继续

在我的代码中,我得到了输出,但是,在我的输出中,页面被加载,它第一次显示一个包含“0”和一个按钮的文本框,但当我单击“生成”按钮时,它正在生成文本框和按钮,但它们被放置在第一个包含“0”的文本框和所有新生成的包含随机数的文本框的上方带按钮放置在第一个文本框上。我希望第一个文本框位于顶部,其余文本框在其下方生成

我是C#,asp.net的新手。请帮忙

以下是我的代码:

<!DOCTYPE html>
<script runat="server">
    static int limit = 0;

    static int[] x = new int[100];
    protected void Page_Load(object sender, EventArgs e)
    {
        if(Page.IsPostBack)
        x[limit] = new Random().Next(100);
    }
    protected void bGenerate_Click(object sender, EventArgs e)
    {
        limit++;
    }
    protected void tbNum_TextChanged(object sender, EventArgs e)
    {
        //tbNum.Text ="";
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>Creates Controls Dynamically</title>
</head>
<body>

  <form id="form1" runat="server">
  <div>
<table style="width:100%;">
            <%
                for (int counter = 0; counter <= limit; counter++)
                {
             %>
            <tr>
                <td>
                    <input type="text" name="tbNum" id="tbNum"  value="<%=x[counter]%>"/>
                    <%--<asp:TextBox ID="tbNum" runat="server" Width="382px" OnTextChanged="tbNum_TextChanged"></asp:TextBox>--%>
                </td>
                <td>
                    <asp:Button ID="bGenerate" runat="server" Text="GENERATE" Width="290px" OnClick="bGenerate_Click" />
                </td>
            </tr>
            <%
                }
             %>
        </table>  
  </div>
  </form>
</body>

静态整数极限=0;
静态整数[]x=新整数[100];
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(第IsPostBack页)
x[限制]=新随机()。下一步(100);
}
受保护的无效b生成\u单击(对象发送方,事件参数e)
{
极限++;
}
受保护的void tbNum_TextChanged(对象发送方,事件参数e)
{
//tbNum.Text=“”;
}
动态创建控件

您应该将生成新随机值的代码移动到
bGenerate\u Click
事件:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
        x[0] = new Random().Next(100);
}
protected void bGenerate_Click(object sender, EventArgs e)
{
    limit++;
    x[limit] = new Random().Next(100);
}
现有代码的问题在于,当您单击“生成”按钮时,
Page\u Load
中的代码会在
b生成\u单击之前执行