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

时间:2014-07-18 14:35:01

标签: c# asp.net

我在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;
    }
}

3 个答案:

答案 0 :(得分:2)

在刷新时,页面会像最初一样被还原(您通过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

两者都对你很有帮助! 祝你好运。

答案 1 :(得分:0)

为简单起见,ViewState正在用户机器内部保存,而Session正在服务器内部保存(通过cookie访问)。 只要页面IsPostBack!IsPostBack,ViewState就会刷新 但是,会话不会。

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

要了解更多信息,您可以浏览ASP.NET Life Cycle。从基本的

学习总是好的

答案 2 :(得分:-2)

使用Session而不是ViewState。