如何解决asp.net中按下F5或是刷新按钮的自动提交问题

可能大家都遇到过这种问题:

当我对一个页面执行添加、修改或是删除一条记录时,按下F5或是刷新按钮,那么页面会再次执行上一条指令,

例如我先删除一条数据后刷新页面,那么它仍旧会执行删除指令,这样的话会使逻辑出现一些问题,这个问题的

解决方法如下:

例如:

一个事件的代码是(只是例子,所以代码本身有很多不规范之处)

    protected void btnDel_Click(object sender, EventArgs e)
    {
        int oldcode = Convert.ToInt32(this.GridView1.SelectedRow.Cells[1].Text);
        SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=MyDb;Integrated Security=True");
        string sql = "delete from class where cid = " + oldcode;
        SqlCommand cmd = new SqlCommand(sql, con);

        con.Open();
        cmd.ExecuteNonQuery();

        cmd.CommandText = "select * from class";
        SqlDataAdapter ad = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        ad.Fill(ds);
        this.GridView1.DataSource = ds.Tables[0];
        this.GridView1.DataBind();

        con.Close();

        Response.Redirect(Request.RawUrl);
    }

加上最后一句便可以达到不重复执行删除指令的效果,但是这样也会有一个问题,就是页面无法保存删除前的其他控件

的状态,所以,在Page_Load方法会加入一些状态设置,所以本身会有这种不好的地方,期待更好的解决方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值