2009-04-13 10 views
1

テキストボックスとボタンを含む* .aspxページがあります。ユーザーがテキストボックスに情報を入力して投稿をクリックすると、SQLデータベースにデータが挿入されます。問題は、ユーザーがリフレッシュすると、同じデータをデータベースに挿入し続けるということです。私はかなりの "クリック"メソッドは、単に挿入呼び出しではなく、呼び出されていると確信しています。私はセッションを混乱させようとしましたが、それは不満です。私は本当に何をすべきかはわかりません。私は簡単な簡単な修正を探しています。Asp.Net SQL Refreshページの重複挿入?

protected void PostButton_Click(object sender, EventArgs e) 
{ 
    string wpost = (string)Session["WallPost"]; 
    DateTime wtime = (DateTime)Session["WallDateTime"]; 
    if (txtWallPost.Text.Length > 0 && !wpost.Equals(txtWallPost.Text)) 
    { 
     string strCon = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["SocialSiteConnectionString"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(strCon)) 
     { 
      using (SqlCommand cmd = conn.CreateCommand()) 
      { 
       cmd.CommandText = "INSERT INTO [WallTable] ([UserId], [FriendId], [WallPost]) VALUES (@UserId, @FriendId, @WallPost)"; 
       cmd.Parameters.AddWithValue("@UserId", User.Identity.Name); 
       cmd.Parameters.AddWithValue("@FriendId", User.Identity.Name); 
       cmd.Parameters.AddWithValue("@WallPost", txtWallPost.Text); 
       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       Session.Add("WallPost", txtWallPost.Text); 
       Session.Add("WallDateTime", new DateTime()); 
       conn.Close(); 
       txtWallPost.Text = ""; 
       LoadWallPosts(); 
      } 
     } 
    } 
    return; 
} 
+0

[繰り返されるポストバックが私のビジネスレイヤーを混乱させないようにする方法](http://stackoverflow.com/questions/481564/how-to-prevent-repeated-postbacks-from-confusing-my-business-layer ) –

答えて

-1

もし彼がリフレッシュするか、戻るボタンを押すと、投稿は再び起こります。したがって、あなたのページは同じデータを処理し、再び挿入します。あなたはPostButton_Clickがあなたのボタンのクリックイベントのためのサーバー・ハンドラである場合は、あなたのロジック

0

を変更する必要が

、コードを挿入するには、ユーザーがポストボタンを押した場合にのみ実行されSHOLD - それはの場合に起こるべきではありませんリフレッシュ

私はが十分ではありませんかなり確信している - あなたのPostButton_Clickメソッドにブレークポイントを入れて確認するために、デバッグモードで実行し、ブレークポイントをリフレッシュしてヒットを取得しますかどうかを確認するためにF5を押してください。

もしそうなら、それはことを意味します(?Page_Load)あなたはどこか から明示的 PostButton_Clickを呼び出している

  1. PostButton_Clickが誤っページ
  2. にいくつかの他の イベントのイベントハンドラとして設定 ました

hypoteisを確認する簡単な方法1 & 2はruですn PostButton_Clickを検索し、どこから呼び出しているのか、それともマークアップ内の他の要素(多分あなたのフォームですか?)のハンドラとして設定しているのを見てください。

-1

クライアントを挿入後に別のページにリダイレクトすることをお勧めしますが、実際に同じページにクライアントを置く必要がある場合は、ページの(bool)変数を使用して、実行された場合は挿入ロジックをスキップします。

0

Response.Redirect(Request.Url.ToString()、false)を追加します。あなたのボタンイベントには、問題を解決する必要があります。

関連する問題