Я получаю исключение NullReferenceException, когда я использую FindControl для поиска элементов управления на страницах master или content

#asp.net #vb.net #themes

#asp.net #vb.net #темы

Вопрос:

Я пытаюсь создать обратимые темы в ASP.NET . Я могу успешно менять темы, используя выпадающий список, но у меня возникают проблемы с изменением SkinID и общих элементов управления HTML (которые являются всеми div, за исключением тега body) программно. Я переместил весь свой код изменения атрибутов и обложки в метод PreInit моей базовой страницы. Теперь я получаю исключение NullReferenceException при запуске страницы. Я думал, что этот код должен использовать существующие элементы управления, на которые он предположительно указывает. Что я упускаю или делаю неправильно?

Вот мой код: скриншот

Комментарии:

1. В какой строке вы получаете эту ошибку?

2. Первый — «Dim bodyControl как HtmlGenericControl …». Я включил часть метода PreInit, чтобы вы могли видеть, что я пытаюсь сделать.

3. Есть ли у вас runat=server id атрибуты и в вашем теле, управляющие чем-то подобным <body runat="server" id="mybody"> ?

4. ДА. Все важные divs имеют code runat=»server» code

Ответ №1:

PreInit Событие, вероятно, слишком рано в жизненном цикле страницы для поиска элементов управления FindControl . Вы также выполняете свои объявления вне события. Это может иметь какое-то отношение и к вашей нулевой ссылке. Я бы посмотрел, можете ли вы изменить его, чтобы посмотреть позже в жизненном цикле. Это может быть полезно, если вы его еще не видели: http://msdn.microsoft.com/en-us/library/ms178472.aspx

Комментарии:

1. Это сработало, как только я переместил элементы управления с верхней части страницы в метод code PreInit()! Большое спасибо!