アイテムの名前と価格を入力するための 2 つのテキスト ボックス、その下の送信ボタン、およびその下の現在のアイテムを示す箇条書きリストがあります。送信ボタンをクリックすると、新しいアイテムがアイテムのリストに入力され、箇条書きのリストが新しいアイテムで更新されます。
ただし、箇条書きリストを生成するコードを OnInit に配置すると、最初のポストバックでリストが更新されません。それを Page_Load に入れると、ポストバックごとにリストが複製されます。どこに置くべきですか、何が間違っていますか?
これが私のコードです。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
List<Product> Products = (List<Product>)Session["Products"];
foreach (Product p in Products)
{
ListItem productname = new ListItem();
productname.Text = p.name;
blProducts.Items.Add(productname);
}
}
送信ボタンのコードは次のとおりです。
protected void btnSubmit_Click(object sender, EventArgs e)
{
List<Product> Products = (List<Product>)Session["Products"];
string name = txtName.Text;
decimal price = decimal.Parse(txtPrice.Text);
Product p = new Product(name, price);
Products.Add(p);
Session["Products"] = Products;
}