我是这个主题的新手,非常迷失。我的网站上有一个文本框。输入textBox 的数据将放置在数组中,计数器将增加。一旦计数器达到五个,就无法向阵列添加更多。
将会有一个按钮显示输入到数组中的所有名称,这也会清除数组和计数器。
我不知道如何在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 :(得分:0)
首先,您需要关注如何将以前的数据保留在页面上。
从发布到发布,您可以将{以及ViewState
以太网存储在control
上。
正如我所看到的,在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-&gt; 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;
我测试它并且运行良好。