Метод расширения HtmlHelper против частичного представления? - PullRequest
19 голосов
/ 20 мая 2009

Мне интересно, когда рекомендуется использовать метод расширения HtmlHelper и когда использовать частичное представление? Похоже, что во многих случаях они одинаково подходят.

Ответы [ 4 ]

16 голосов
/ 20 мая 2009

HtmlHelpers - небольшие кусочки HTML (пользовательские ссылки, кнопки, вводы и т. Д.)

PartialViews - более сложные вещи (формы, верхние и нижние колонтитулы, элементы списка и т. Д.)

13 голосов
/ 20 мая 2009

Мне лично кажется, что частичное представление более или менее похоже на usercontrol в asp.net, который действует как группа многократно используемых функциональных элементов. Например, если вам нужно создать окно контроля входа в систему, которое может отображаться на всем сайте, частичное представление будет лучше. Что касается частичного просмотра, он фактически самодостаточен со своей собственной стратегией рендеринга / обработки (и может иметь свое собственное состояние)

С другой стороны, htmlhelper - это всего лишь инструменты для экономии времени на кодирование и поддержания, как-то лучшей читаемости ваших кодов.

11 голосов
/ 27 мая 2009

Гораздо проще писать тесты для помощников HTML (которые являются просто методами), чем частичные представления. Если я пишу что-то, что имеет логику, например различный вывод, основанный на содержимом viewdata, то я использую помощника с тестами вокруг него. Если я создаю часть повторно используемого контента без какой-либо реальной логики, то, вероятно, я буду использовать частичное представление.

1 голос
/ 20 мая 2009

Просто добавьте: вы будете использовать htmlhelper для рендеринга элементов в usercontrol, если существующие htmlhelpers не могут выполнить эту работу ... поэтому давайте сформулируем это как правило:

В сценарии, когда вы используете htmlhelper вместо usercontrol (частичное представление), это плохой подход а также Сценарий, когда вы используете htmlhelper в качестве помощника для рендеринга элементов Atom страницы / usercontrol, хорошо подходит

...