Как смоделировать обратную передачу во вложенных пользовательских элементах управления? - PullRequest
1 голос
/ 29 апреля 2009

Я делаю приложение asp.net с одной страницей. На этой странице у меня определен один пользовательский контроль. У этого пользовательского элемента управления есть меню (три кнопки) и также определены 3 пользовательских элемента управления. В зависимости от нажатой кнопки один из трех пользовательских элементов управления становится видимым истинным или ложным.

В этих трех пользовательских элементах управления у меня есть кнопка и сообщение, и я хочу показать сообщение «Это НЕ ОТПРАВКА» при нажатии кнопки меню и при нажатии кнопки пользовательского элемента управления сообщение будет « ДА, это постбэк !!! ".

Вопрос в том, что при использовании свойства «IsPostBack» пользовательского элемента управления или страницы сообщение никогда не будет «Это НЕ ОТПРАВКА» из-за нажатой кнопки меню для отображения вложенного пользовательского элемента управления.

Это структура страницы:

page
  parent usercontrol
    menu
    nested usercontrol 1
      message
      button
    nested usercontrol 2
    nested usercontrol 3

Я знаю, что это можно сделать с помощью ViewState, но есть способ смоделировать свойство IsPostBack или узнать, когда истинная обратная передача usercontrol?

Спасибо.

1 Ответ

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

У меня есть решение этой проблемы. Когда элемент запускает, событие отправляется на сервер в коллекции Request.Form, поэтому я создал свойство во вложенных usercontrols, которое проверяет наличие дочернего элемента управления (определенного в самом usercontrol) в коллекции Request.Form:

public bool IsUserControlPostBack
    {
        get 
        { 
            foreach (Control c in Controls)
                foreach(string key in Page.Request.Form.AllKeys)
                    if( c.ClientID == key.Replace('$','_'))
                        return true;

            return false;
        }
    }

Этот код может быть свойством usercontrol или, если его многократно вызывали, переменной, установленной в событии OnInit usercontrol.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...