2010-09-21 16 views
10

Najczęściej używam go, gdy uzyskuję dostęp do właściwości złożonego sterowania, która zależy od kontroli podrzędnej. Ale dodałem go również do OnInit kontrolki, aby upewnić się, że pole ukryte zostało poprawnie dodane. Jeszcze minutę temu zadzwoniłem do RenderControl, ponieważ miałem problem z renderowaniem przedłużacza kalendarza i naprawiłem go. Zaczynam się trochę zagubić, kiedy potrzebuję i kiedy nie muszę dzwonić do "Kontroli bezpieczeństwa" i kiedy powinienem to nazwać. Wszelkie wskazówki są mile widziane. Dzięki!Jakie jest prawidłowe użycie funkcji Kontrolki bezpieczeństwa()?

+5

To pytanie uszczęśliwia mnie, nauczyłem się MVC :) – fearofawhackplanet

Odpowiedz

6

Program zapewnia, że ​​funkcja ControlChildControls wyzwala CreateChildControl, jeśli nie została wcześniej wywołana. Trzeba to zrobić tylko jednorazowo w cyklu życia strony. Nazywam to bezwarunkowo w OnInit/Page_Init i nigdzie indziej. To miejsce ma tę zaletę, że formanty są tworzone zanim ASP.NET załaduje ViewState. Jeśli korzystasz z ViewState lub ControlState, konieczne jest wczesne utworzenie kontroli podrzędnych.

+0

Czy wywołanie go w OnInit eliminuje potrzebę wywoływania go we właściwościach, jeśli właściwość uzyskuje dostęp do czegoś w rodzaju TextBox1.text? – Mike

+0

Ogólnie mówię "tak", ale w szczegółach zależy to od twojego użycia. Jeśli zadzwonisz do programu SecureChildControls w systemie OnInit, można bezpiecznie uzyskać dostęp do elementów sterujących (poprzez właściwości lub w inny sposób) bez wywoływania go ponownie we wszystkich kolejnych etapach cyklu życia stron (ładowanie, odświeżanie, renderowanie ...) Jeśli korzystasz z ViewState, powinno to być możliwe. jedyne użycie. –

0

Metoda AcceptChildControls zapewnia, że ​​formanty podrzędne są tworzone przed uzyskaniem do nich dostępu.

Za każdym razem, gdy piszesz złożone elementy sterujące, chcesz zbudować kontrolki wewnątrz zdarzeń CreateChildControls, wywołaj funkcję SecureChildControl przed uzyskaniem do nich dostępu, aby upewnić się, że wszystkie formanty zostały utworzone, aby nie uzyskać wyjątku odwołania o wartości zerowej.

Powiązane problemy