2011-12-16 4 views

ответ

5

Это интересный вопрос; но думать об этом так.

Вы только что написали таблицу, в которой перечислены все ваши пользователи. Вы показываете это на странице Список пользователей вашего сайта.

На странице «Найти пользователя» вам может потребоваться показать список пользователей. Вы переписываете один и тот же HTML, код, javascript, CSS, как и раньше? Или вы повторно используете элемент управления, на этот раз добавляя возможность фильтрации по имени пользователя или другим атрибутам?

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

Кроме того, вы только что сделали ОДИН контроль в своем проекте, ответственный за работу с некоторыми функциями - вся логика для него находится в одном месте и отделена от другого кода. Это тоже важная концепция, так как она останавливает весь ваш код. В примере пользователей вы можете взаимодействовать со списком пользователей через интерфейс, а не смешивать его с другим кодом, который может делать разные вещи. Это называется SRP и может быть хорошей вещью.

В качестве практического примера у нас есть элемент управления, который показывает список наших продуктов. Мы можем повторно использовать один и тот же элемент управления на экране поиска, экране администратора, экране «Продукты как этот» и на экране «Продукты, которые вы выбрали». Этот код содержит много логики, которая находится в одном месте, поэтому ее можно легко поддерживать, и ее можно использовать слишком просто.

Пользовательские элементы управления могут быть очень полезными. Поэтому вы должны использовать их, когда чувствуете, что можете упаковать группу существующих элементов управления, HTML и т. Д. Это делает их многоразовыми и намного проще в обслуживании.

Существует также концепция пользовательских элементов управления - это, как правило, повторная реализация существующих элементов управления - например, у вас может быть ExtendedTextBox, который проверяет текст, когда кто-то его вводит.

Вы можете прочитать больше about both kinds of controls here

+1

Еще один пример, который мне нравится, - это когда я группирую метку, текстовое поле, валидаторы и окружающий html в один пользовательский элемент управления, а затем я использую его на экранах редактирования следующим образом: . Сравните эту строку с исходным

+0

Я думаю, что он заслуживает того, чтобы быть ответом на все его собственные, поскольку это хорошая практическая демонстрация того, как простой пример использования может выиграть от пользовательского контроля и повторного использования. В вашем примере я реализовал нечто подобное; пользовательский EmailTextBox, наследующий от Control, хотя, как я сказал (с некоторыми другими) в сборке, чтобы делиться между всеми нашими проектами - Custom Control. – dash

+0

В вашем ответе написано все и вот почему у него есть +1 от меня. Мой пример, я думаю, больше похож на композитный. Я также использую наследование. Например, я наследую FormView и решаю там, если DefaultMode предназначен для Edit или для Insert, в зависимости от некоторого значения, такого как QueryString ["id"], затем я решаю, что происходит, когда Edit/Insert не удается/имеет успех, например, показывая сообщение видимые некоторые буквальные или просто перенаправляющие где-нибудь, возможно, на страницах списков). Идея, как вы сказали, если один и тот же код или разметка повторяется на всех страницах, то ее следует перенести в пользовательские элементы управления или расширить существующие. –

0

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

1

Пользовательские элементы управления хороши по тем же причинам, что процедуры/функции/методы хороши: код (и разметки) повторное использование.

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

Смежные вопросы