2009-04-02 6 views
0

Я получаю элемент управления из syste.web.ui.webcontrols.button. Я тогда называю его buttonv2. Затем я добавляю произвольное свойство к этому новому классу «int abc», обращаясь к нему через get/set accessor, который сохраняет его значение в viewstate (он также возвращает 0, если значение viewstate равно null, то есть я попытался для доступа к нему, не устанавливая его).SkinID on custom control not working (asp.net)

Теперь, когда я даю 'abc' значение, а затем смотрю его в режиме отладки, он попадает в «установленную» часть аксессуара и вводит значение, которое я ему даю (т.е. 55), затем прямо после , он попадает в часть моего кода «if (abc> 0) {}», где он получает значение из viewstate как 0!

Это происходит только тогда, когда im использует «скины» asp.net и задает значение «abc» в файле скина. (то есть) файл кожи читает: <asp:buttonv2 runat="server" SkinID="bob" abc="55" />

и на моей странице im с использованием <asp:buttonv2 runat="server" SkinID="bob" />, а моя проблема - это abc всегда равна 0 ?!

ответ

1

От MS: «Он отслеживает изменения этих атрибутов только после того, как метод OnInit выполняется для запроса страницы и сохраняет изменения в состоянии просмотра страницы или элемента управления».

http://msdn.microsoft.com/en-us/library/ms178472.aspx

и

http://msdn.microsoft.com/en-us/library/system.web.ui.statebag.aspx

больше.

Что произойдет, если вы просто присвоите значение локальной переменной в «set», а затем добавите ее в viewstate из «get» на странице init/load?