Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Где-то читал, что когда создаешь свой собственный контрол и собираешься использовать ViewState для сохранение его мемберов, то необходимо использовать какие-то дополнительные параметры вьюстэйта, иначе если на странице будет несколько инстансов этого контрола, то они будут шарить один и тот же вьюстэйт, вместо того чтоб иметь свой собственный. Кто что думает по этому поводу? О каких параметрых вобще речь? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2006, 19:24 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Глупости все это. Каждый контрол будет юзать свой вьюстейт. Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 01:32 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Dimon aka Manowar, Вы писали: DAM>Глупости все это. Каждый контрол будет юзать свой вьюстейт. DAM> данное сообщение получено с www.gotdotnet.ru DAM>ссылка на оригинальное сообщение Точно вам говорю, читал в какой-то книжке, что мол если у одного экземпляра самодельного контрола напишешь ViewState["property"] = "trali-vali", то у всех остальных экземпляров этого же контрола ViewState["property"] будет возвращять тоже "trali-vali". И это как-то лечится какими-то хитрыми ключами. А вот как и какими — загадка. Еще есть каки-нито мысли на эту тему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 11:14 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
бред какой-то, а ну-ка книжку в студию! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 11:54 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Фигня в книжке написанна, но если Вас уж очень сильно донимает, то ViewState[this.UniqueID+"property"] Вам помогут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 12:21 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, busybox, Вы писали: B>Еще есть каки-нито мысли на эту тему? Проверить все это самому трудно или религия мешает? :)... << RSDN@Home 1.2.0 alpha rev. 655>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 15:01 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
МОжет там речь шла о контролах внутри template контрола? Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 15:12 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, busybox, Вы писали: B>Еще есть каки-нито мысли на эту тему? на заборе тоже пишут открываем рефлектор, смотрим Page.ProcessRequestMain ... this.OnInitComplete(EventArgs.Empty); ... if (this.IsPostBack) { ... this.LoadAllState(); ... } ... вау, круто! лезем в LoadAllState(); object obj1 = this.LoadPageStateFromPersistenceMedium(); ... IDictionary dictionary1 = (obj1 as Pair).First as IDictionary; ... foreach (Control control1 in this._registeredControlsRequiringControlState) { control1.LoadControlStateInternal(dictionary1[control1.UniqueID]); } ... вьюстейт будет один и тот же только в том случае, если у двух контролов один и тот же UniqueID. Как формируется коллекция _registeredControlsRequiringControlState и можно ли туда запихать два контрола с одинаковым UniqueID — если интересно, посмотрите сами. Но ИМХО, такое вполне может случится. Как я понимаю, уникальность UniqueID сильно зависит от разработчика контролов. Если, допустим, он в контейнерном составном контроле переопределяет CreateChildControls, явно назначая ID дочерним контролам, и в то же время забывает относледоваться от INamingContainer — то при помещении пары таких контейнеров будут созданы контролы с одинаковым UniqueID. Но это моё имхо — надо проверять.... << RSDN@Home 1.1.4 stable SR1 rev. 568>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 15:38 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Dronopotamus, Вы писали: я прогнал, а никто и не заметил :)) снова открываем LoadAllState object obj1 = this.LoadPageStateFromPersistenceMedium(); ... IDictionary dictionary1 = (obj1 as Pair).First as IDictionary; ... foreach (Control control1 in this._registeredControlsRequiringControlState) { control1.LoadControlStateInternal(dictionary1[control1.UniqueID]); } ... //это все нам не нужно, это про контрол стейт ... if (!this._fPageLayoutChanged) { base.LoadViewStateRecursive(pair1.Second); } //вот что нам нужно ) смотрим LoadViewStateRecursive ... if ((this.Page != null) && this.Page.IsPostBack) { if (this.LoadViewStateByID) { this.LoadChildViewStateByID(list1); } else { this.LoadChildViewStateByIndex(list1); } } ... оказывается есть флаг :) вот что пишет мсдн By default, when a parent control loads view state into child controls it creates, it does this by the position of each child control in the parent control's Controls collection. When view state is initially applied, all child controls might not have been created. In this case, the view state for controls not yet created is saved, and applied when the child controls are created later. For a parent control to apply view state to its child controls, two conditions must be met: On postback, the parent control must create the child controls in exactly the same order as the previous request so that the order of the controls remains consistent. After postback, any child controls created must be added to the end of the parent control's Controls collection. If these two conditions cannot be met, as in the case of the delayed creation of a child control, the parent control can load view state by using ID. To set the LoadViewStateByID property to true, use the ViewStateModeByIdAttribute metadata attribute for the parent control. если вьюстейт грузицца по индексу — то вообще не может быть ситуации что у разных контролов был один и тот же вьюстейт, так как индексы разные а если по ID — то на усмотрения разработчика контрола (может же он создать пару дочерних контролов с одинаковым ID), но для этого надо заюзать модный аттрибут...... << RSDN@Home 1.1.4 stable SR1 rev. 568>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 16:04 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Dronopotamus, Вы писали: D>Здравствуйте, Dronopotamus, Вы писали: D>оказывается есть флаг :) То-то же! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 17:00 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Лиман Артём, Вы писали: ЛА>бред какой-то, а ну-ка книжку в студию! В том-то и дело что ни фига не бред! Книжку не помню, аспнэтом занимался полтора года назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 17:01 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, busybox, Вы писали: B>Где-то читал, что когда создаешь свой собственный контрол и собираешься использовать ViewState для сохранение его мемберов, то необходимо использовать какие-то дополнительные параметры вьюстэйта, иначе если на странице будет несколько инстансов этого контрола, то они будут шарить один и тот же вьюстэйт, вместо того чтоб иметь свой собственный. B>Кто что думает по этому поводу? О каких параметрых вобще речь? Итак, вьюстейт, он вообще один — это hidden поле на странице. Вопрос стоит в уникальности ключей. Нужно просто пользоваться уникальными ключами. Можно пользоваться также ControlState — это как раз обособленный вьюстейт для контролов, причем он работает, даже если выключен вьюстейт на странице. Подробности здесь. Атрибут указанный выше, это немного не то: The ViewStateModeByIdAttribute class is used to specify a control that requires view-state loading by ID. The default view-state loading behavior is for ASP.NET to load the view-state information for a control by its index in the control tree of the page. There is a performance cost for loading view-state information by ID because the page control tree must be searched for the control specifically before loading its view-state information. If the ViewStateModeByIdAttribute class is used as a metadata attribute of a custom control class, the LoadViewStateByID property of the control returns true. If the ViewStateModeByIdAttribute class is not used, the LoadViewStateByID property of the control returns its default value of false, which means that the control does not load its view-state information by ID.В инфракрасный прицел мы видны, как небесный ОМОН ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 17:25 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
2 Dronopotamus, чё то я в своем рефлекторе такого кода не вижу, может речь идет про .НЕТ 2.0 ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 17:42 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
2 Dronopotamus, да вижу, что речь идет о .НЕТ 2.0. Хорошо, допустим можна сделать так, что бы вьюстейт загружался по ID контрола. Но я так же вижу, что метод, который это делает (LoadChildViewStateByID) в конце концов использует метод FindControl, а последний в свою очередь не допускает использование не уникальных ID в своей иерархии о чём культурно известит в исключении. Так что - всё должнл быть нормально. Чего и следовало ожидать. В том-то и дело что ни фига не бред! не верю (с) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 17:50 |
|
||
|
ViewState и несколько экземпляров юзер контрола!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Лиман Артём, Вы писали: ЛА>2 Dronopotamus, да вижу, что речь идет о .НЕТ 2.0. ЛА>Хорошо, допустим можна сделать так, что бы вьюстейт загружался по ID ЛА>контрола. Но я так же вижу, что метод, который это делает ЛА>(LoadChildViewStateByID) в конце концов использует метод FindControl, а ЛА>последний в свою очередь не допускает использование не уникальных ID в своей ЛА>иерархии о чём культурно известит в исключении. Так что — всё должнл быть ЛА>нормально. Чего и следовало ожидать. ок, тнкс за дополнения. значит книжка гонит при любом сценарии ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2006, 22:28 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33966723&tid=1389841]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 396ms |

| 0 / 0 |
