Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
jonni
110 / 110 / 25
Регистрация: 03.03.2010
Сообщений: 436
1

Postback дважды

06.05.2013, 13:29. Просмотров 1328. Ответов 8
Метки нет (Все метки)

Всем привет. Возникла проблема - есть MasterPage, в котором есть событие OnLoad.
Также есть простая страница, которая использует этот MasterPage и у этой страницы также есть событие OnLoad.
Суть проблемы- при постбеке он происходит дважды. Т.е. один раз для MasterPage, другой для просто страницы.
Как этого избежать?
Как например при смене значения в DropDownlist, находящегося в MasterPage вызывался только PostBack MasterPage?

Спасибо заранее
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 13:29
Ответы с готовыми решениями:

Отключение PostBack
Создал свой контрл,в нем есть LinkButton,на стороне клиента он выполняет джава скрипт!Если...

Не работает postback c jquery
Доброго времени суток. У меня такая проблема: есть модальное диалоговое окно(jQuery), а в нём...

Вызов PostBack из функции
Добрый день! У меня есть событие, в конце которого надо, что бы произошел PostBack. Подскажите,...

Invalid postback or callback argument
Сайт 2-й год стоит и все нормально, в последние пару месяцев стали появляться вот такие исключения:...

Как отменить postback у DropDownLlist
Дано 2 DropDownLlist. В первом, при выборе города, идет запрос через ajax и XmlHttpRequest. Данные...

8
Vegas
86 / 85 / 11
Регистрация: 12.07.2009
Сообщений: 465
07.05.2013, 10:48 2
Это нормальное поведение.
Чем вам это мешает?
0
jonni
110 / 110 / 25
Регистрация: 03.03.2010
Сообщений: 436
07.05.2013, 15:58  [ТС] 3
Тем, что они каким-то образом блокируют друг друга и сайт зависает...
Решил путем отслеживания компонента, который вызвал postback. Может кому пригодится..
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
private string getPostBackControlName()
    {
        Control control = null;
        //first we will check the "__EVENTTARGET" because if post back made by       the controls
        //which used "_doPostBack" function also available in Request.Form collection.
        string ctrlname = Page.Request.Params["__EVENTTARGET"];
        if (ctrlname != null && ctrlname != String.Empty)
        {
            control = Page.FindControl(ctrlname);
        }
        // if __EVENTTARGET is null, the control is a button type and we need to
        // iterate over the form collection to find it
        else
        {
            string ctrlStr = String.Empty;
            Control c = null;
            foreach (string ctl in Page.Request.Form)
            {
                //handle ImageButton they having an additional "quasi-property" in their Id which identifies
                //mouse x and y coordinates
                if (ctl.EndsWith(".x") || ctl.EndsWith(".y"))
                {
                    ctrlStr = ctl.Substring(0, ctl.Length - 2);
                    c = Page.FindControl(ctrlStr);
                }
                else
                {
                    c = Page.FindControl(ctl);
                }
                if (c is System.Web.UI.WebControls.Button ||
                         c is System.Web.UI.WebControls.ImageButton)
                {
                    control = c;
                    break;
                }
            }
        }
        if(control!=null)return control.ID;
        else return null;
 
    
}
0
HF
268 / 202 / 63
Регистрация: 09.09.2011
Сообщений: 725
Завершенные тесты: 20
07.05.2013, 16:08 4
Просто к сведению
C#
1
if (ctrlname != null && ctrlname != String.Empty)
пишется
C#
1
if (String.IsNullOrWhiteSpace(ctrlname) == false)
Честно говоря, в остальном это какой-то очень странный код, который понятен только вам. Вы по-видимому даже знаете какие именно контролы могут вызывать постбэк, то зачем тогда все эти нагромождения с какими проверками на ".xy"? По коду получается что вы находите первый попавшийся, замеченный в реквесте, буттон или имиджбуттон и решаете что именно он вызвал запрос. А если нет?

Если вы хотите узнать наверняка имя кнопки, используйте у каждой кнопки свойство
UseSubmitBehavior="False" он всегда передаёт в Request.Form["__EVENTTARGET"] имя объекта вызвавшего постбэк
1
07.05.2013, 16:08
Vegas
86 / 85 / 11
Регистрация: 12.07.2009
Сообщений: 465
07.05.2013, 16:08 5
a IsPostBack не помогает?
0
jonni
110 / 110 / 25
Регистрация: 03.03.2010
Сообщений: 436
07.05.2013, 18:08  [ТС] 6
Vegas, не помогает. Ну проблема решилась, методом выше, так что всем спасибо..
0
HF
268 / 202 / 63
Регистрация: 09.09.2011
Сообщений: 725
Завершенные тесты: 20
07.05.2013, 20:33 7
А мне всё равно не понятно что такое "два постбэка". Как это?
0
Vegas
86 / 85 / 11
Регистрация: 12.07.2009
Сообщений: 465
07.05.2013, 23:35 8
Цитата Сообщение от HF Посмотреть сообщение
А мне всё равно не понятно что такое "два постбэка". Как это?
Это не 2 постбэка, это 2 события OnLoad
0
jonni
110 / 110 / 25
Регистрация: 03.03.2010
Сообщений: 436
08.05.2013, 15:41  [ТС] 9
Vegas, абсолютно верно. И в каждом событие Onload есть свой "блок" if(IsPostBack){}
0
08.05.2013, 15:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2013, 15:41

DataPicker control без PostBack'a
Друзья, не подскажете ли где можно раздобыть нормальный control DataPicker, что бы при клике по...

Как сгенерить ссылку postback
Как получить программно ссылку, подобную той которая генирится с помощью контрола LinkButton...

Postback: правильно обыграть или отказаться
Всем привет. Есть динамически создающаяся по cookie таблица, в т.ч. содержащая LinkButton-ы, на...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru