页面刷新导致回发- Asp.net

本文关键字:Asp net 刷新 | 更新日期: 2023-09-27 18:13:44

我在Usercontrol中有一个表单,&从一个页面调用它,比如index.aspx。提交表单并单击刷新后,它再次导致回发。因此,我试图在视图状态中维护一个标记,在保存数据后为'1',在初始页面加载时为'0'。

但是为什么viewstate在刷新时将其值更改为0呢?如何解决这个问题。

MyForm.ascx.cs

protected void Page_Load(object sender, EventArgs e){
    if(!IsPostBack){
        ViewState["DataSaved"] = 0;
    }
}
protected void btnSubmit_Click(object sender, EventArgs e){
    if (Page.IsValid && Convert.ToInt32(ViewState["DataSaved"]) == 0){
        //save data;
        ViewState["DataSaved"] = 1;
    } else{
        ViewState["DataSaved"] = 0;
    }
}

页面刷新导致回发- Asp.net

刷新后,页面恢复为最初的样子(您通过GET请求来到这个页面)。因此Viewstate返回到它的初始状态,对它所做的所有更改都将丢失。这是正常的行为。你期望的行为更像一个会话,所以你可以尝试使用会话-它将在请求之间保持其状态。

查看以下内容,了解。net中的页面生命周期:

http://msdn.microsoft.com/en-us/library/vstudio/ms178472%28v=vs.100%29.aspx

这是对Viewstate的解释:

http://msdn.microsoft.com/en-us/library/ms972976.aspx

都对你很有帮助!好运。

为了简单起见,ViewState保存在用户机器内,Session保存在服务器机器内(通过cookie访问)。当页面IsPostBack!IsPostBack时,ViewState将刷新但是,Session不会。

在你的情况下,我认为你应该使用会话,而不是ViewState。

要了解更多,您可以通过ASP。NET生命周期。从基本的

中学习总是好的

使用Session代替ViewState。