[英]ASP.NET Web Page Postback
我在页面内贴有一个类级别的价格变量,如下所示:
public partial class _Default : System.Web.UI.Page
{
private MyClass myVar = new MyClass();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
myVar.LoadData();
myVar.ShowData();
}
}
protected void cmdRefresh_Click(object sender, EventArgs e)
{
myVar.ShowData();
}
}
我的问题是,在初始加载后,第一次按下该按钮时,似乎重置了myVar,并且其所有数据都丢失了。 这是ASP.NET的已知问题,是否有解决方法?
如果只需要为当前页面保存类,请使用ViewState
存储类。 如果您想将其保存到整个站点,请查看Sessions
。
private MyClass myClass
{
get {
if (this.ViewState["myVar"] != null)
{
return (MyClass)this.ViewState["myVar"];
}
}
set{
this.ViewState["myVar"] = value;
}
}
变量myVar将永远不会在回发之间持久化,您需要使用某种缓存方法,例如Application / Session / ViewState / Cookie。
是的,这是已知功能。 基本上,页面对象是为每个请求创建的,因此为您设置了属性(IsPostBack是其中的一个),但是您需要自行采取措施以确保每次都填充字段(在代码中声明)。 在这种特定情况下,要么通过获取它们,要么将它们保持在表单(视图状态)或会话数据中。 选择哪一个取决于数据大小,重新提取时间,数据存储负载等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.