我可以处理PostBack并以不同方式刷新吗?

时间:2011-12-13 18:03:13

标签: c# asp.net http

这是一个我没有看到答案的一般性问题。

我可以告诉PostBack和代码刷新之间的区别,以确保人们不会重复提交相同的项目吗?

应用程序是基于C#的ASP.NET。代码如下:

protected void SubmitListItem(object sender, EventArgs e)
{
    if (Page.IsPostBack) //Fires on both submit and F5
    {
        SPUser user = web.CurrentUser;
        string alias = user.Email.Substring(0, user.Email.IndexOf('@'));
        if (ListChoice.SelectedItem.Text == "comment")
        {
            SPList TargetList = web.Lists.TryGetList("Offer Comments");
            SPListItem item = TargetList.Items.Add();
            item["Title"] = TitleBox.Text;
            item["Body"] = BodyBox.Text;
            item["OfferID"] = OfferID;
            item["Alias"] = alias;
            item.SystemUpdate();
            TargetList.Update();
            LoadOffers();
        }
        else
        {
            SPList TargetList = web.Lists.TryGetList("Offer Best Practices");
            SPListItem item = TargetList.Items.Add();
            item["Title"] = TitleBox.Text;
            item["Body"] = BodyBox.Text;
            item["OfferID"] = OfferID;
            item.SystemUpdate();
            TargetList.Update();
            LoadOffers();
        }
    }
}

1 个答案:

答案 0 :(得分:4)

IsPostBack

如果前一个请求是帖子,点击F5会发送一个帖子请求。因此,您还需要确保处理该案例。最糟糕的情况是用户反复点击按钮,同时发送多个帖子请求。通常通过在单击时禁用按钮来处理。它在不同的浏览器/设备上的工作方式不同,因此您需要指定受众群体。