ASP.NET: при попытке изменить свойство элементы управления становятся пустыми - PullRequest
0 голосов
/ 28 июня 2010
  1. Создан пользовательский элемент управления.
  2. В пользовательском контроле у ​​меня есть простой элемент управления, такой как Literal, в разметке.
  3. В пользовательском элементе управления Page_Load я пытаюсь изменить свойство, такое как Текст, для элемента управления, созданного в разметке.
  4. Управление нулем.

Что в мире мне не хватает?









(Начните громко: я делаю все эти причудливые вещи с системами входа в систему и динамически добавляю / изменяю элементы управления на лету с AJAX и т. Д., Но я не могу изменить свойство статического элемента управления! простая проблема без поиска чего-то еще! В прошлом мне приходилось динамически генерировать всю кровавую страницу, чтобы избежать этой идиотски простой проблемы. Конец разглагольствования.)

Ответы [ 3 ]

0 голосов
/ 29 июня 2010

Я выяснил способ после анализа порядка исполнения страницы (http://msdn.microsoft.com/en-us/library/ms178472.aspx).

protected void Page_Init(object sender, EventArgs e)
{
   literalGameName.Text = myGame.Name;
}

Инициализация происходит после создания элементов управления, но не после завершения загрузки страницы элементов управления.

0 голосов
/ 02 ноября 2012

Я знаю, что это старый, но хотел бы рассказать о том, как я исправил аналогичную проблему, которая у меня была.У меня есть пользовательский элемент управления с панелью asp: Panel, на котором я пытался отключить видимость во время Page_Load, но элемент управления не работал.Затем я заметил, что мое определение Page_Load выглядело так:

protected void Page_Load(object sender, EventArgs e)
{
   _myControl.visible = true;
}

Когда на самом деле мне нужно, чтобы определение выглядело так:

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    _myControl.visible = true;
}

Выполнение переопределения решило проблему.

0 голосов
/ 28 июня 2010

Page.LoadControl () имеет две перегрузки, одна принимает виртуальный путь, другая принимает тип. Иногда при использовании перегрузки версии Type вы получаете такое поведение.

Если возможно, попробуйте использовать версию LoadControl с виртуальным путем.

Редактировать: в качестве FYI это объясняется тем, что фактический тип пользовательского элемента управления не соответствует ожидаемому. Тип ASP.NET «оборачивает» тип пользовательского элемента управления.

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