刷新asp.net后阻止页面重新提交

时间:2014-01-21 10:15:48

标签: c# asp.net ajax postback page-refresh

我有一个Ajax启用的asp表单,用户可以在其中提交数据。

它工作正常,但当他/她按 f5 或刷新页面时,表单重新提交。这是一个常见的问题,也是重复的。

我在不同的论坛上已经阅读了很多关于这个问题的问题并实施了一些但问题仍然存在。

我无法根据客户要求重定向页面。我参考了this question。它在本地机器上工作正常但是当我部署页面时甚至没有提交一次。我也付出了一些努力,如下所示。

HiddenField hf = new HiddenField();

 protected void Page_Load(object sender, EventArgs e)
    { 

        if (!IsPostBack)
        {
           createToken();    //to check page is refreshed
        }

    }

public void createToken()
    {
        string token = System.Guid.NewGuid().ToString();
        Session["token"] = token;
        hf.Value = token;
    }
    private bool TokenIsValid()
    {
        string expectedToken = (string)Session["token"];
        if (expectedToken == null)
            return false;

        string actualToken = hf.Value;

        return expectedToken == actualToken;
    }

 protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            if (TokenIsValid()) // check that page is not refreshed by browser.
            {
                //insert logic
        }}

        catch (Exception ex)
        {


        }

有一个Dropdownlist导致autopostback的大问题,并且autopostback无法禁用,因此隐藏字段的值正在刷新。我不知道如何防止重新提交。

1 个答案:

答案 0 :(得分:0)

我通过会话传递成功消息解决了这个问题,在page_load 上写了该消息并且如果页面是新的那个会话,则该会话无效。