1

哪种方法可以更好地防止刷新页面后将数据重新插入数据库?

我应该在每次插入一行时检查数据库还是使用 viewState 和会话更有效?

 protected void Page_Load(object sender, EventArgs e)
    {

        /* check refresh */
        if (IsPostBack == false)
        {
            Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString());
        }
        //rest of the codes
     }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        // set both session and viewstate value equal 
        ViewState["CheckRefresh"] = Session["CheckRefresh"];
    }

    protected void btnSaveTazkera_Click(object sender, EventArgs e)
    {
        if (Session["CheckRefresh"].ToString() == ViewState["CheckRefresh"].ToString())
        {
            //give a new value to session
            Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString());
    //rest of the code
    }

tnx。

4

1 回答 1

0

使用会话更有效,但也可能不是100%安全(如果我不刷新页面,而是重新打开浏览器并再次输入相同的信息怎么办?会话是新的,数据仍然会插入两次) .

如果要防止将记录重复插入数据库,最简单的方法是创建相应的主键或通过检查插入是否正常的存储过程进行插入。

您仍然可以在插入之前将会话用作附加检查,但最终检查应留给数据库/插入数据库的代码。

但这只是我的意见和我会怎么做。我不认为有什么像标准的事情要做:-)

于 2012-11-20T09:00:31.830 回答