Asp.Net при обновлении, дубликат поста вставлен ... должен быть только один пост - PullRequest
0 голосов
/ 13 апреля 2009

У меня есть asp: текстовое поле, которое позволяет пользователю вводить информацию. Когда пользователь нажимает кнопку asp:, он вставляет текст из текстового поля в мою базу данных sql, а затем перенаправляет обратно на страницу. Если пользователь нажимает обновить, событие от кнопки вызывается снова. Мне нужно исправить это, чтобы он больше не вызывался или не публиковал информацию.

protected void PostButton_Click(object sender, EventArgs e)
{
    if (txtWallPost.Text.Length > 0)
    {
        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();
                conn.Close();
                txtWallPost.Text = "";
                LoadWallPosts();
                Response.Redirect("~/UserPages/UserProfile.aspx?view="+"wall");
            }
        }
    }
    return;
}

Ответы [ 2 ]

4 голосов
/ 13 апреля 2009

Классическая проблема, с классическим решением: Redirect After Post. Вам просто нужно перенаправить пользователя на другую страницу (или на ту же страницу ...) после обработки POST - таким образом, когда он нажимает на обновление, последним (и повторяющимся) запросом будет GET.

См:

0 голосов
/ 13 апреля 2009

В итоге я просто добавил идентификатор сеанса для текстового сообщения на стене. В методе post он проверяет, отличается ли текст текстового поля от текста сеанса. При обновлении он очищает сессию и поэтому работает нормально.

...