Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Pupsa
4 / 4 / 1
Регистрация: 02.03.2012
Сообщений: 112
.NET 4.x

При обновлении страницы форма повторно отправляет данные

25.10.2013, 15:49. Показов 1987. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
на странице есть кнопка, к которой привязан обработчик. При обновлении страницы он вызывается. как сделать так, чтобы он вызывался только по нажатию кнопки?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
protected void Page_Load(object sender, EventArgs e)
    {
        CommentText.Text = "";
        string constr = "Data Source=(LocalDb)\\v11.0;" +
            "AttachDbFilename=\"C:\\Users\\f0600911\\Documents\\Visual Studio 2012\\WebSites\\WebSite1\\App_Data\\aspnet-WebSite1(1)-20131023090125.mdf\";" +
            "Initial Catalog=aspnet-WebSite1(1)-20131023090125;" +
            "Integrated Security=True";
 
        SqlConnection connectionSQL = new SqlConnection(constr);
        SqlCommand Сommand = connectionSQL.CreateCommand();
        Сommand.CommandText = @"SELECT Articles.*, Categories.name FROM Articles INNER JOIN Categories ON Articles.category_id = Categories.id where Articles.id = " +
            Server.UrlDecode(Request.QueryString["id"]);
 
        try
        {
            connectionSQL.Open();
 
            //добавление текста статьи
            SqlDataReader reader = Сommand.ExecuteReader();
            while (reader.Read())
            {
                TableRow Row = new TableRow();
                TableCell Cell = new TableCell();
                HyperLink Link = new HyperLink();
                Label label = new Label();
                label.Text = reader.GetString(1);
                Link.NavigateUrl = "~/Article.aspx?id=" + Server.UrlEncode(reader.GetInt32(0).ToString());
                Link.Text = reader.GetString(1);
                Cell.Controls.Add(Link);
                Cell.Controls.Add(label);
                Row.Controls.Add(Cell);
                Article.Controls.Add(Row);
            }
            reader.Close();
 
            //добавление комментариев
            Сommand.CommandText = @"SELECT Comments.*, Users.UserName, Users.UserID FROM Comments INNER JOIN Users ON Comments.UserID = Users.UserID where Comments.Article_id = " +
                Server.UrlDecode(Request.QueryString["id"]);
 
            reader = Сommand.ExecuteReader();
            while (reader.Read())
            {
                TableRow Row = new TableRow();
                TableCell Cell = new TableCell();
                HyperLink Link = new HyperLink();
                Label label = new Label();
                label.Text = "<p>" + reader.GetString(1) + "</p>";
                Link.NavigateUrl = "~/User.aspx?id=" + Server.UrlEncode(reader.GetValue(6).ToString());
                Link.Text = reader.GetString(5);
                Cell.Controls.Add(Link);
                Cell.Controls.Add(label);
                Row.Controls.Add(Cell);
                Comments.Controls.Add(Row);
            }
            reader.Close();
            connectionSQL.Close();
        }
        catch (InvalidCastException ee)
        {
            Log log = new Log();
            log.AddLog(System.DateTime.Today, ee.Message, "Article.aspx");
        }
    }
 
    protected void AddComments(object sender, EventArgs e)
    {
        string constr = "Data Source=(LocalDb)\\v11.0;" +
            "AttachDbFilename=\"C:\\Users\\f0600911\\Documents\\Visual Studio 2012\\WebSites\\WebSite1\\App_Data\\aspnet-WebSite1(1)-20131023090125.mdf\";" +
            "Initial Catalog=aspnet-WebSite1(1)-20131023090125;" +
            "Integrated Security=True";
 
        SqlConnection connectionSQL = new SqlConnection(constr);
        SqlCommand Сommand = connectionSQL.CreateCommand();
 
        int i = 0;
        try
        {
            //добавление комментария
            Сommand.CommandText = "SELECT MAX(id) FROM Comments";
            connectionSQL.Open();
            SqlDataReader reader = Сommand.ExecuteReader();
            while (reader.Read())
            {
                try
                {
                    i = reader.GetInt32(0);
                }
                catch
                {
                    i = 0;
                }
            }
            reader.Close();
            Сommand.CommandText = "INSERT INTO Comments (id, UserID, Article_id, Text, DateTime) VALUES (" + (i + 1).ToString() + ", \'" +
                "4a98d80c-45d4-47e1-ac17-ea0a6e292f1e" + "\', " + Server.UrlDecode(Request.QueryString["id"]) + ",\'" + CommentText.Text + "\', \'" +
                System.DateTime.Today.Year.ToString() + "-" + System.DateTime.Today.Month.ToString() + "-" + System.DateTime.Today.Day.ToString() +
                " " + System.DateTime.Now.Hour + ":" + System.DateTime.Now.Minute + ":" + System.DateTime.Now.Second + "\')";
 
            Сommand.ExecuteNonQuery();
            connectionSQL.Close();
        }
        catch (InvalidCastException ee)
        {
            Log log = new Log();
            log.AddLog(System.DateTime.Today, ee.Message, "Article.aspx");
        }
    }
еще есть глюк с textbox "CommentText". в обработчике текст почему-то не виден
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2013, 15:49
Ответы с готовыми решениями:

Данные заносятся повторно при обновлении страницы
Всем привет! Вот у меня проблема: - пишу код добавления данных в базу для кнопки - данные заносятся - но если я нажму кнопку F5...

При обновлении страницы логин заносится в БД повторно
В общем я только начал изучать mysql. И решил я добавить на свой сайт баланс, чтобы потом была возможность тратить его на карточки. ...

При переходе на страницу форма сама отправляет данные
Здравствуйте, снова я к Вам. Есть форма редактирования данных и отправки данных. Проблема такая что при переходе на страницу с формой или...

3
326 / 159 / 45
Регистрация: 06.12.2012
Сообщений: 305
25.10.2013, 15:56
не вчитываясь кажись
if (IsPostBack)
{
}
1
 Аватар для Pupsa
4 / 4 / 1
Регистрация: 02.03.2012
Сообщений: 112
25.10.2013, 16:03  [ТС]
куда это воткнуть?
это помогло с Textbox, но повторный вызов обработчика остался
0
HF
 Аватар для HF
1303 / 882 / 199
Регистрация: 09.09.2011
Сообщений: 2,590
Записей в блоге: 2
25.10.2013, 19:03
Цитата Сообщение от skynick99 Посмотреть сообщение
не вчитываясь кажись
if (IsPostBack)
{
}
F5 = Button Press = IsPostBack

Цитата Сообщение от Pupsa Посмотреть сообщение
на странице есть кнопка, к которой привязан обработчик. При обновлении страницы он вызывается. как сделать так, чтобы он вызывался только по нажатию кнопки?
Речь надеюсь идёт о событии "AddComments(object sender, EventArgs e)" ? Если да, то всё верно.

Самый простой вариант - делать переход Redirect на страницу после обработки. Тогда обновление страницы будет как первый раз отрисованная страница, а не страница на которой нажали кнопку. Например тут,
C#
1
2
3
4
5
6
7
        catch (InvalidCastException ee)
        {
            Log log = new Log();
            log.AddLog(System.DateTime.Today, ee.Message, "Article.aspx");
        }
        Redirect("~/таже_страница.aspx");
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2013, 19:03
Помогаю со студенческими работами здесь

При перезагрузки страницы повторно отправляются данные в базу, как исправить?
&lt;form action=&quot;index.php&quot; method=&quot;post&quot; name=&quot;r_form&quot; &gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt; Имя: &lt;/td&gt; &lt;td&gt; ...

При обновлении страницы записывает данные в БД
Всем привет. Почему когда я обновляю свою страницу, в бд записываются данные, который я добавлял через форму до обновления страницы ? Кто...

не передавать данные формы при обновлении страницы
Здравствуйте! Не знаю даже в тот ли или не в тот раздел форума пишу вопрос, но все же попытаюсь: возможно ли вообще сделать...

Как уничтожить данные пост при обновлении страницы
Есть ли способ уничтожить пост данные, чтобы не предпринималась браузером попытка передать их повторно? Кроме редиректа?

Форма не отправляет данные
Здравствуйте! Не так давно начал изучать пхп, сейчас пишу свой блог. Вот решил сделать возможность комментировать записи в блоге.Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru