хорошо, где именно я должен создавать динамические элементы управления - PullRequest
3 голосов
/ 21 декабря 2010

Я только что был активен по двум вопросам, касающимся динамических элементов управления, ответ почти всегда о воссоздании при обратной передаче, вопрос , где правильное место для этого

Здесьдва вопроса SO

вопрос один

вопрос 2

Мы всегда создаем динамическое управление путем переопределения CreateChildControls

Просматривая множество элементов управления в отражателе, главным образом элементы управления Telerik, я всегда считал, что это правильно, но многие люди говорят, что они должны быть созданы в Init.я продолжаю использовать CreateChildControls или Init является правильным способом ... Почему это кажется такой областью путаницы ..

Ответы [ 2 ]

3 голосов
/ 21 декабря 2010

По правде говоря, они оба выполняют одно и то же. Если вы разрабатываете средства управления для своей организации, то поместить его в init будет просто замечательно (так как он будет работать, даже если это «технически то место, где оно должно быть», но MS создала метод, в котором они ожидают, что он пойдет .

Если вы похожи на Telerik, где вы создаете элементы управления, которые будет использовать кто-то другой, то я бы определенно поместил его в класс CreateChildControls. Зачем? Потому что это то, что люди ожидают, и это то, что MS хочет, чтобы разработчики управления делали. В этой ситуации вы должны быть обеспокоены (особенно если разрабатываемые вами элементы управления не запечатаны), что кто-то может переопределять различные методы, и, как вы видели, многие люди переопределяют класс init, чтобы код работает так, как они хотят. Вы всегда хотите избежать ситуации, когда ваш код таинственным образом не работает, потому что они забыли вызвать базовый метод, и это не задокументировано. Когда вы помещаете его в метод CreateChildControls, вы говорите другим разработчикам: «Я, вероятно, что-то делаю с созданием элементов управления, которые вы хотите принять к сведению». Я всегда думал бы классифицировать основу этого метода, если переопределю его.

Еще одна замечательная вещь, которую можно поместить в CreateChildControls, заключается в том, что многие люди, вероятно, не знают об этом (и люди, которые знают, для чего он используется). Поэтому, когда они наследуют ваш контроль и обезьяну с помощью Init и забывают вызвать базовый метод Init, ваш код все еще «волшебным образом» работает, и им не приходится суетиться, выясняя, что пошло не так. *

0 голосов
/ 21 декабря 2010

Добавьте эту страницу в закладки!

Обзор жизненного цикла страницы ASP.NET http://msdn.microsoft.com/en-us/library/ms178472.aspx

...