главные страницы, страницы форм, форма runat = server> все методы onclick на главной странице? - PullRequest
0 голосов
/ 23 мая 2010

У меня проблема в том, что у меня есть несколько вложенных главных страниц:

  • уровень 1 : глобальный (верхний колонтитул, нижний колонтитул, логин, навигация и т. Д.)
  • уровень 2 : специфический (страницы поиска, страницы аккаунта и т. Д.)
  • уровень 3 : сама страница

теперь, поскольку только одна форма может иметь runat=server, я помещаю форму на глобальную страницу (чтобы я мог обрабатывать такие вещи, как логин, обратная связь и т. Д.).

Теперь, с этим решением, я должен был бы также поместить, например, методы уровня 3 (см. Выше), такие как поиск, также на главную страницу уровня 1, но это приведет к тому, что эта страница будет тяжелой (для разработки) с код из всех мест, даже тех, которые используются только на одной странице (например, измените форму электронной почты).

есть ли способ делегировать такие методы из событий onclick (например: ChangeEMail) с уровня 1 (глобальная главная страница) на уровень 3 (сама отдельная страница).

чтобы быть еще яснее: я не хочу иметь метод ChangeEMail в глобальном коде главной страницы, но хотел бы как-нибудь «переместить» его на единственную страницу, которая фактически будет его использовать. причина, по которой он в настоящее время должен быть на глобальном мастере, заключается в том, что глобальный мастер имеет form runat=server, и на странице aspx может быть только один из них.

таким образом будет проще (более логично) структурировать код.

Thnx (надеюсь, я все правильно объяснил)

искали, но не нашли никакой общей информации по обработке этого случая, обычно ответ таков: есть все методы на главной странице, но мне это не нравится. так что ЛЮБОЙ способ переместить его на конкретную страницу будет потрясающим. Thnx

edit тоже часть того же самого ... с другой стороны - как получить доступ к textbox1.text, например, на странице контента с главной страницы? любая лучшая практика для этого?

1 Ответ

2 голосов
/ 23 мая 2010

Если вы поместите кнопку «Поиск» и текстовое поле в сам ASPX (уровень 3), обработчик событий также перейдет на страницу (или ее код).Неважно, что тег формы находится на глобальной главной странице (уровень 1)

Что касается вашего второго вопроса: вы можете использовать

var tb = this.FindControl("textbox1") as TextBox;
...