SkinID на пользовательском элементе управления не работает (asp.net) - PullRequest
0 голосов
/ 02 апреля 2009

Я получаю элемент управления из syste.web.ui.webcontrols.button. Я тогда называю это buttonv2. Затем я добавляю произвольное свойство к этому новому классу "int abc", получая к нему доступ через метод доступа get / set, который сохраняет его значение в viewstate (он также возвращает 0, если значение viewstate равно нулю, т.е. я пытался доступ к нему без настройки).

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

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

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

1 Ответ

1 голос
/ 03 апреля 2009

I думаю, параметры скина назначаются во время инициализации элемента управления, тогда как состояние представления будет сохраняться только после завершения OnInit.

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

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

и

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

для более.

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

...