2011-12-13 62 views
2

这是一个普遍的问题,我没有看到答案。我可以处理PostBack并进行不同的刷新吗?

我可否告诉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(); 
     } 
    } 
} 

回答

4

IsPostBack

虽然按F5如果将先前的请求一个帖子发送POST请求。所以你还需要确保处理这种情况。最糟糕的情况是,用户反复点击按钮,同时发送多个帖子请求。通常在点击按钮时禁用按钮。它在不同的浏览器/设备上的工作方式会有所不同,因此您需要指定您的受众群体。

+0

+1为一个完美的单词答案。 – jvenema 2011-12-13 18:05:58