您好我正在做一个非常简单的Asp.net应用程序项目
namespace WebApplication1
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
market m = new market();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void button_clickSell(object sender, EventArgs e)
{
float price = float.Parse(this.BoxIdPrezzo.Text);
m.insertProd("xxx", 10, "yyy");
m.addOfferForProd("ooo", 5, "gggg");
m.insertProd(this.BoxIdDescrizione.Text,price,this.BoxIdUtente.Text);
String s;
m.outMarket(out s);
this.Output.Text = s; //the output here work good
this.Output.Visible = true;
}
protected void button_clickView(object sender, EventArgs e)
{
String s;
m.outMarket(out s);
this.Output.Text = s; // here seem to have lost the reference to product why?
this.Output.Visible = true;
}
}
}
问题是当我点击button1时调用button_clickSell一切正常但当我点击button2时调用button_clickView产品似乎不再出现在Market对象中,但这很奇怪,因为在市场对象中我有一个产品清单和m.outMarket首次合作。
答案 0 :(得分:4)
这是因为页面的工作原理。每次您发出请求或回复页面时,该变量中的值都会丢失。
您需要在会话或类似的事情中保留它。
以下是使用会话的一个非常基本的示例。
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Collection"] == null)
{
Session["Collection"] = new List<int>();
}//if
}
protected void button_clickSell(object sender, EventArgs e)
{
List<int> collection = (List<int>)Session["Collection"];
collection.Add(7);
collection.Add(9);
}
protected void button_clickView(object sender, EventArgs e)
{
List<int> collection = (List<int>)Session["Collection"];
collection.Add(10);
}
答案 1 :(得分:0)
您可以在MSDN上查看此帖子:ASP.NET Session State Overview
答案 2 :(得分:0)
当需要信息时,应使用
Session
页面。现在关于躺在同一页面上的两个按钮的问题。所以 ViewState是最佳选择。
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["Collection"] == null)
{
ViewState["Collection"] = new List<int>();
}//if
}
protected void button_clickSell(object sender, EventArgs e)
{
List<int> collection = (List<int>)ViewState["Collection"];
collection.Add(7);
collection.Add(9);
}
protected void button_clickView(object sender, EventArgs e)
{
List<int> collection = (List<int>)ViewState["Collection"];
collection.Add(10);
}