0

我正在使用 asp.net 4 和 C#。我在通过单击按钮的事件将项目添加到列表时遇到问题。在按钮上单击我想从文本框中读取文本,将其转换为 int 并将其添加到 int 类型列表的底部。然后我想在标签中显示列表中的每个项目。问题是它每次只显示最新的文本框条目。我花了很长时间来研究这个并尝试不同的事情,但无法弄清楚我做错了什么。请问有人可以帮忙吗?

我的代码如下:

namespace CSI
{
    public partial class _Default : System.Web.UI.Page

{

string lablelItems;

List<int> numbers = new List<int>();

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void AddToSeqBTN_Click(object sender, EventArgs e)
    {
        int number;
        number = Convert.ToInt32(AddNumberTXB.Text);
        numbers.Add(number);
        printtolabel(numbers);

    }

    private void printtolabel(List<int> numbers)
    {
        foreach (int n in numbers)
        {
            lablelItems += " " + n.ToString();
            CurrentSequenceLBL.Text = lablelItems;
        }
    }
4

3 回答 3

3

HTTP 是无状态的。这意味着在 ASP.NET 中,所有对象都在页面生命周期结束时被销毁。因此,一旦页面呈现给客户端,它将不再存在于服务器的内存中。

因此,您需要将项目保存在某处。

在 ASP.NET 应用程序中管理持久用户状态的九个选项。

于 2012-08-21T13:03:33.293 回答
1

在您的处理程序方法中

AddToSeqBTN_Click

只是这样做:

CurrentSequenceLBL.Text += " " + Convert.ToInt32(AddNumberTXB.Text); 
于 2012-08-21T13:07:27.043 回答
0

该列表numbers正在为您的页面收到的每个回发重新实例化。您必须将它的引用存储在某处,例如Session(在服务器上)或将其发送到ViewState(到客户端)。

另外,当您说“将其添加到底部”时,是字面意思吗?我的意思是,这个职位对你来说重要吗?因为,如果是,您应该使用另一个类,例如 a Queue,因为List不能确保位置。

于 2012-08-21T13:02:30.400 回答