2009-04-13 4 views
1

텍스트 상자와 단추가 포함 된 * .aspx 페이지가 있습니다. 사용자가 텍스트 상자에 정보를 입력하고 게시를 클릭하면 데이터가 SQL 데이터베이스에 삽입됩니다. 문제는 사용자가 새로 고침을 클릭하면 동일한 데이터를 데이터베이스에 계속 삽입한다는 것입니다. 나는 삽입 호출이 아니라 전체 "클릭"메소드가 호출된다고 확신한다. 세션을 망칠려고했지만 불평을합니다. 나는 무엇을해야할지 잘 모르겠다. 나는 쉬운 쉬운 문제를 찾고있다.Asp.Net SQL 새로 고침 페이지에 중복 삽입이 있습니까?

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

을 변경해야 새롭게 하다.

내가가 충분하지 않습니다 확신합니다 - 당신의 PostButton_Click 방법에 중단 점을 넣어 확인하기 위해, 디버그 모드로 실행하고 중단 점은 새로 고침 당한다 있는지 확인하기 위해 F5를 누르십시오.

는 것을 의미하므로 경우 명시 적 PostButton_Click 다른 곳 (? Page_Load)에서 호출되는

  1. PostButton_Click 페이지
  2. 에 다른 이벤트에 대한 이벤트 처리기와 같은 실수 설정했다

hypoteis를 확인하는 빠른 방법 1 & 2는 ru입니다. n PostButton_Click을 검색하고 어디에서 호출했는지 또는 다른 요소 (어쩌면 양식입니까?)에 대한 핸들러로 설정되어 있는지 확인하십시오.

-1

삽입 후 클라이언트를 다른 페이지로 리디렉션하는 것이 좋지만 클라이언트가 실제로 동일한 페이지에 머물러 있어야하는 경우 페이지의 (bool) 변수를 사용하여 삽입이 있는지 수행 된 후 삽입 논리를 건너 뜁니다.

0

Response.Redirect (Request.Url.ToString(), false); 귀하의 버튼 이벤트와 그 문제를 해결한다.