1

クリックすると、テキストボックス内のテキストを取得して文字列のリストに追加するボタンが必要です。次に、クリックするとリストの数を別のテキスト ボックスに出力する別のボタンがあります。何をしようとしても、ゼロのカウントを取得し続けます。誰かが私が間違っていることを手伝ってくれますか?

c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    List<string> itemList = new List<string>();
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        itemList.Add(txtItem.Text);
        txtItem.Text = "";
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        txtItemListCount.Text = itemList.Count.ToString();

    }
}

マークアップ

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">


    <asp:TextBox ID="txtItem" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    <br />
    <br />
    <asp:TextBox TextMode="MultiLine" ID="txtItemListCount" runat="server"></asp:TextBox>
    <br />
    <br />
    <asp:Button ID="Button2" runat="server" Text="Button 2" 
        onclick="Button2_Click" />


</asp:Content>
4

4 に答える 4

3

変化する

List<string> itemList = new List<string>();

string itemListKey = "itemListKey";
List<string> itemList
{
  get
  {
     if ( Session[itemListKey] == null )
        Session[itemListKey] = new List<string>();
     return (List<string>)Session[itemListKey];
  }
}
于 2013-05-21T23:35:28.150 に答える
2

itemsList は、ポストバックごとに (サーバーが呼び出されるたびに) もう一度作成されます。リストをViewStateまたはSessionに保存してみてください...

于 2013-05-21T23:33:12.373 に答える
1

System.Web.UI.Pageリクエストごとに再作成されます。そのため、button2 がクリックされたときにitemList初期化されます。new List<string>();その場合、結果カウントはゼロです。

itemListより耐久性のあるリソース(セッション、viewState、データベースなど)に、リクエスト間の値を保存する必要があります。

于 2013-05-21T23:35:41.883 に答える