C# 共享变量并将文本框数据放入数组

C# 共享变量并将文本框数据放入数组,c#,asp.net,C#,Asp.net,我对这门学科一无所知,非常迷茫。我的网站上有一个文本框。输入文本框的数据将被放入一个数组中,并且计数器将增加。一旦计数器达到5,就不能再向数组中添加更多 将有一个按钮显示输入到数组中的所有名称,这将清除数组和计数器 我不知道如何在C#中对类和方法进行排序。我把按钮放在主类中,这样我就可以在它们之间共享变量,但是我不能访问文本框 这里有一些代码,因为我正试图弄明白这一点,但它可能不属于这里。代码也相当简单,因为我只是想把它弄清楚。感谢您的帮助 <script runat="server"&g

我对这门学科一无所知,非常迷茫。我的网站上有一个文本框。输入文本框的数据将被放入一个数组中,并且计数器将增加。一旦计数器达到5,就不能再向数组中添加更多

将有一个按钮显示输入到数组中的所有名称,这将清除数组和计数器

我不知道如何在C#中对类和方法进行排序。我把按钮放在主类中,这样我就可以在它们之间共享变量,但是我不能访问文本框

这里有一些代码,因为我正试图弄明白这一点,但它可能不属于这里。代码也相当简单,因为我只是想把它弄清楚。感谢您的帮助

<script runat="server"> 

public partial class Arrays
{
  private int Counter = 0;    

  protected void btnEnter_Click(object sender, EventArgs e)
  {
    Button btn = (Button)sender;
    btn.Text = (Int32.Parse(btn.Text) + 1).ToString();
    Label1.Text = "Enter Another student's name";
  }

  public void btnEnter_Click2(object sender, EventArgs e)
  {
     Label1.Text = "Enter a student's name ";        
  }
}

</script>

公共部分类数组
{
专用整数计数器=0;
受保护的无效b输入\单击(对象发送者,事件参数e)
{
按钮btn=(按钮)发送器;
Text=(Int32.Parse(btn.Text)+1.ToString();
Label1.Text=“输入其他学生的姓名”;
}
public void b输入者\单击2(对象发送者,事件参数e)
{
Label1.Text=“输入学生姓名”;
}
}

首先,您需要关注如何在页面上保留以前的数据

protected void btnEnter_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
    var Counter = Int32.Parse(btn.Text);

    // here you save the name in the array
    //  an magically is saved inside the page on viewstates data
    //  and you can have it anywhere on code behind.
    cArrKeepNames[Counter] = NameFromEditor.Text;

    Counter++;
    if(Counter >= 5)
    {   
        btn.Enable = false;
        Label1.Text = "No more studen's names please";
    }
    else
    {  
        btn.Text = Counter.ToString();

        Label1.Text = "Enter Another student's name";
    }
}
从一个帖子到另一个帖子,您可以将它们存储在
ViewState
控件的ether上

正如我看到的,在
btn.Text
上有一个保存上一个状态,这不是很酷,但可以接受

protected void btnEnter_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
     // the btn.Text keeps the number of post backs (enters of name).
    var Counter = Int32.Parse(btn.Text);
    Counter++;

    if(Counter >= 5)
    {   
        Label1.Text = "No more studen's names please";
    }
    else
    {    
        btn.Text = Counter.ToString();          
        Label1.Text = "Enter Another student's name";
    }
}
正如您所看到的,将计数器“存储”在
btn.Text
中,使用它可以知道许多帖子已经完成

您可以使用类似的方式来存储输入的名称。我更喜欢将它保存在viewstate上,我可以用这段代码来实现这一点

const string cArrNameConst = "cArr_cnst";

public string[] cArrKeepNames
{
    get
    {
        if (!(ViewState[cArrNameConst] is string[]))
        {
            // need to fix the memory and added to viewstate
            ViewState[cArrNameConst] = new string[5];
        }

        return (string[])ViewState[cArrNameConst];
    }
}
使用该代码,您可以从0->4向代码中添加
cArrKeepNames[]
上的任何名称,并将其放在回邮后,因为这是将其保留在页面的视图状态

protected void btnEnter_Click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
    var Counter = Int32.Parse(btn.Text);

    // here you save the name in the array
    //  an magically is saved inside the page on viewstates data
    //  and you can have it anywhere on code behind.
    cArrKeepNames[Counter] = NameFromEditor.Text;

    Counter++;
    if(Counter >= 5)
    {   
        btn.Enable = false;
        Label1.Text = "No more studen's names please";
    }
    else
    {  
        btn.Text = Counter.ToString();

        Label1.Text = "Enter Another student's name";
    }
}
这样的简单代码可以随时读取数组:

foreach (var One in cArrKeepNames)
    txtOutput.Text += "<br>" + One;
foreach(cArrKeepNames中的变量1)
txtOutput.Text+=“
”+一个;

我测试了一下,效果很好。

如果我们解决了你的学校作业,你还是迷路了。我不是在寻找答案,我是在寻求指导。我甚至不知道如何开始这件事,我的教授在课堂上快速浏览了一遍。好的,接受了,我会给你一些指导,非常感谢。我有一个标签,上面写着“输入学生的名字”按钮时,学生的名字会进入数组,计数器会增加,标签现在会说,“输入另一个名字”我不断地得到一个关于嵌套和不尊重的错误。如果标签在课堂上,我该如何更新?亚里士多德,非常感谢!我要学习这个,希望我的C#技能会更强。@user1657478我希望会,因为如果他们在一家公司雇用你,你就不能让我为你工作:)