powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Controls.Add
10 сообщений из 10, страница 1 из 1
Controls.Add
    #33154183
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Такая вот проблема: Page.aspx, в нее посредством Controls.Add загружается контрол ControlPage (страницы). В ControlPage у нас есть свойство Title.
Вопрос как из Page.aspx получить Title из ControlPage, при условии, что ControlPage может менятся динамически. То есть таких ControlPage может быть сотня.

Заранее благодарю.
...
Рейтинг: 0 / 0
Controls.Add
    #33155715
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос снят.
...
Рейтинг: 0 / 0
Controls.Add
    #33160052
guestyyy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ответ в студию
...
Рейтинг: 0 / 0
Controls.Add
    #33162030
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guestyyyответ в студию
Все контролы надо добавлять на страницу не динамически типа Controls.Add(), а статически в конструкторе. Иначе жди проблем. Этим-то страницы и отличаются от контролов, в которых динамическое добавление - обычная практика. Дело в том, что контролы добавляются правильно только в CreateChildControls(), а эта процедура используется при создании элементов управления. В принципе, её можно использовать и на страницах, но при этом сложность программы неоправданно возрастает, это всё равно, что применять GoTo, хотя я нашёл один случай, при котором применение GoTo может быть оправдано (но всё равно не рекомендуется наверно).
...
Рейтинг: 0 / 0
Controls.Add
    #33162086
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max ProВсе контролы надо добавлять на страницу не динамически типа Controls.Add(), а статически в конструкторе. Иначе жди проблем.
всегда добавлял контролы динамически и ни каких проблем не испытывал...
...
Рейтинг: 0 / 0
Controls.Add
    #33162123
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profil Max ProВсе контролы надо добавлять на страницу не динамически типа Controls.Add(), а статически в конструкторе. Иначе жди проблем.
всегда добавлял контролы динамически и ни каких проблем не испытывал...

аналогично
...
Рейтинг: 0 / 0
Controls.Add
    #33162365
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
profilвсегда добавлял контролы динамически и ни каких проблем не испытывал...
Куда мне до тебя!
:-)
Проблемы следующие (они решаемы, но геморойно)
1. Теряется ViewState
2. Повышается вероятность якобы неверного формирования дерева контролов. Эта ошибка может возникнуть внезапно и на пустом месте (видимо недоделка Микрософта). Причём чем сложнее сценарий, тем больше вероятность.
Способ решения: или втупую, восстанавливая дерево контролов при каждом постбеке в Page_Load(), и вылавливая ViewState; или по науке через CreateChildControls().
Поскольку и то и другое гиморно, советую обойти гору.
...
Рейтинг: 0 / 0
Controls.Add
    #33164129
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэтому единственное применение Controls на странице я вижу такое:
if(oDocument.Error!="")
Код: plaintext
1.
2.
3.
4.
{
	Controls.Clear();
	Response.Write(oDocument.Error);
	return;
}
Ну типа есть форма, выдающая документ по его номеру. Если при выводе информации возникла ошибка, то документ уже не надо выводить, а надо сообщить об ошибке. Вот этот код проверяет нет ли ошибки (в моём случае объект oDocument заполняется посредством Вэб-сервиса). И если есть ошибка, то очищается форма и процедура завершает своё выполнение.
...
Рейтинг: 0 / 0
Controls.Add
    #33170254
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отвечаю. идея состоит в том, что бы создать класс, в котором есть свойство Title... ну в моем случае это еще десяток свойств, типа Description и Keywords....

создается контрол который наследуется от этого класса.... потом загружается контрол

Код: plaintext
1.
2.
3.
			string src = string.Format("Pages/{0}.ascx",page);
			ControlToLoad = LoadControl(src);
			panelPage.Controls.Add(ControlToLoad);

обратите внимание загрузку делаю в панель...

потом вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
		private void Page_PreRender(object sender, System.EventArgs e)
		{
			MyProjectName.Classes.PageText ControlToRead = (MyProjectName.Classes.PageText)ControlToLoad;
			if(ControlToRead != null)
			{
				this.Title = ControlToRead.Title;
				this.Keywords = ControlToRead.Keywords;
			}
		}

таким образом извлекаем из контрола тайтл.
...
Рейтинг: 0 / 0
Controls.Add
    #33170256
Фотография Aeon Technologies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати ВСЕ контролы работают как полноценные .ASPX, _НИКАКИХ_ проблем замечено не было, могу ошибатся, не помню просто, а смотреть в лом, проблемы с виевстейтом решаются использованием панели. В чем там фишка я не помню, но в моем ـОЗУ такое крутится :)

Метода загрузки контролов опробована в десятке проектов.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Controls.Add
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]