0

私はasp.net4と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アプリケーションで永続的なユーザー状態を管理するための9つのオプション。

于 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(クライアントに)送信する必要があります。

また、「一番下に追加」と言うと、文字通りですか?つまり、あなたにとってその立場は重要ですか?なぜなら、そうであれば、位置が保証されないためQueue、のような別のクラスを使用する必要があるからです。List

于 2012-08-21T13:02:30.400 に答える