ASP.NET ascx vs. aspx - Вы повторно используете пользовательские элементы управления?

Наша команда разрабатывает довольно большой веб-проект ASP.NET, который первоначально запускался в ASP.NET 1.0 и несколько раз был перенесен на все новые версии .NET.

Мы интенсивно использовали User Controls (ascx). Но в ретроспективе я сомневаюсь, что это было хорошее решение. Очень небольшой процент этих элементов управления повторно используется (resuable) через разные страницы. В приложение добавлен только этот уровень сложности, что усложняет некоторые вещи.

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

Итак, мой вопрос: начинать новый проект, нормально ли избавиться от ascx и реализовать все на самих страницах (aspx)? Может, за исключением случаев, когда вы выполняете большую динамическую загрузку (нет) пользовательских элементов управления? Каков ваш опыт и что вы посоветуете?

Ответ 1

У нас есть несколько проектов, которые широко используют элементы управления ASCX, а другие - нет. По моему опыту вы должны принять решение в каждом конкретном случае.

Мои две любимые причины для использования элементов управления ASCX:

  • Вы реализуете часть пользовательского интерфейса, которая будет отображаться на разных страницах (или несколько раз на одной странице).
  • Вы хотите инкапсулировать некоторые сложные функции, чтобы они отличались от остальной части страницы, что делает ваш код более легким для чтения и более удобным для обслуживания.

Элементы управления ASCX могут быть полезны, но вам действительно нужно убедиться, что вы используете их только тогда, когда есть веская причина - в противном случае - как вы говорите, вы можете добавить излишнюю сложность в свою кодовую базу.

Ответ 2

Используется правильно, пользовательские элементы управления улучшают обслуживание и повторное использование, и очень часто быстрее создавать, чем серверные элементы управления.

Вы упомянули, что в вашем предыдущем проекте очень немногие пользовательские элементы управления были повторно использованы. Это, по-видимому, больше связано с плохим планированием, чем с присущим им недостатком в пользовательских элементах управления.

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

Ответ 3

Я бы использовал usercontrols по-прежнему, и в основном потому, что вы можете более легко отделять контент от дизайна таким образом, что в конечном итоге поможет вам значительно изменить дизайн приложения.

Это также упрощает перемещение элементов управления на странице, чем если бы вам пришлось вырезать/вставлять код повсюду.

Ответ 4

Он полностью сводится к типу веб-приложения, которое разрабатывается. На работе одно из наших приложений очень настраивается, поэтому работает на одной странице (default.aspx) и загружает элементы управления в зависимости от того, как он настроен для зарегистрированного пользователя.

Однако, с другой стороны, если вы пишете веб-сайт, к которому нужно получить доступ через SEO, и его нужно легко ориентировать, то реализация каждого представления на странице aspx является хорошим способом. Делает доступ к каждой странице во время разработки простым и прямым способом, так как вы можете получить к ней доступ напрямую (при условии, что никакие разрешения/логические ограничения безопасности не мешают), установив его в качестве начальной страницы в VS.

Еще одна возможность бросить в микс использует ASP.net MVC; взаимозависимые представления с повторно используемыми пользовательскими элементами управления также выбрасываются в микс: -)