Asp.net 为什么我的视图状态没有被清除,并在重新加载时再次将值保存到数据库?

Asp.net 为什么我的视图状态没有被清除,并在重新加载时再次将值保存到数据库?,asp.net,Asp.net,我正在aspx页面上注册用户控件 在某些aspx页面上,用户控件上有一个按钮被抵制,该按钮执行一些操作以将viewste的值存储到数据库,下面我已清除了我的viewstate值,但如果我右键单击并重新加载页面,它会将值重新插入数据库,我缺少的内容或viewstate不会被清除,我应该如何防止它将相同的条目重新保存到数据库中 我正在下面部分编写代码 protected void btnFinish_Click(object sender, EventArgs e) { i

我正在aspx页面上注册用户控件

在某些aspx页面上,用户控件上有一个按钮被抵制,该按钮执行一些操作以将viewste的值存储到数据库,下面我已清除了我的viewstate值,但如果我右键单击并重新加载页面,它会将值重新插入数据库,我缺少的内容或viewstate不会被清除,我应该如何防止它将相同的条目重新保存到数据库中

我正在下面部分编写代码

 protected void btnFinish_Click(object sender, EventArgs e)
    {
        if (ViewState["dtQuestions"] != null)
        {
          foreach (DataRow dr in dtQuestions.Rows)
            {
                int currQueScore = GetAnswerScore(dr["AnswerType"].ToString().Trim(), dr["ClientAnswerValue"].ToString().Trim());
                dr["ClientAnswerScore"] = currQueScore;
                myScore += currQueScore;
                SurveyClientAnswer objDetail = new SurveyClientAnswer();
                objDetail.SurveyClientID = objMaster.SurveyClientID;
                objDetail.QuestionID = int.Parse(dr["QuestionID"].ToString());
                objDetail.Answer = dr["ClientAnswerValue"].ToString();
                objDetail.Score = int.Parse(dr["ClientAnswerScore"].ToString());
                DB.SurveyClientAnswers.InsertOnSubmit(objDetail);
                DB.SubmitChanges();
            }
            objMaster.FinalScore = myScore;
            DB.SubmitChanges();

            ViewState["dtQuestions"] = null;
        }
 else 
        {
            ModalPopupExtender1.Show();
            pnl.Visible = true;

        }

    }

如果不想重新插入数据,只需在数据库上创建一个唯一的约束来禁止这种情况

就在代码中执行此操作而言,您可能只能将添加此条件的数据插入到
if
语句中:

if(IsPostBack && (ViewState["dtQuestions"] != null)
{
    //meaning the user is not simply reloading the page but actually posting back
}

请注意,在某些情况下,这可能不起作用。没有测试是很难知道的,但我坚信这应该在数据库级别处理。

是否提示您在刷新时重新提交帖子信息?您可以重定向以避免刷新,或者检测刷新。请一些人帮我解决这个问题,我应该如何管理它?那么重新加载的实际意义是什么?它是否贯穿页面的整个生命周期?另外,我主要关心的是,当我清除viwestate时,它如何将值重新发送到DB?它是否贯穿页面的整个生命周期?->每次页面加载或回发都会经历页面生命周期。只有在单击按钮时才清除ViewState,简单的页面重新加载仍将具有与最初在ViewState中输入的值相同的值,但我看到在附加断点后,如果重新加载,仍按“提交”按钮并清除ViewState..我在逻辑上对其感到非常困惑,请您从页面生命周期的角度详细阐述一下好吗?