繁体   English   中英

ASP.NET网页回发

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM