Создание HTMLControls против вывода строки HTML

Недавно я пытался объяснить программисту, почему в ASP.Net они должны создавать HTMLControls вместо создания HTML-строк для создания веб-страниц.

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

Если бы вам пришлось ответить на этот вопрос, каким был бы ваш ответ?

Почему

Dim divA as New HtmlControls.HtmlGenericControl ("div") 
Dim ulList1 as New HtmlControls.HtmlGenericControl ("ul") 
Dim liObj1, liObj2, liObj3 как новый HtmlControls.HtmlGenericControl ("li") 
liObj1.innerText = "Элемент списка 1" 
liObj2.innerText = "Элемент списка 2"
liObj3.innerText = "Элемент списка 3"
ulList1.Controls.Add (liObj1)
ulList1.Controls.Add (liObj2)
ulList1.Controls.add (liObj3)
divA.Controls.add (ulList1)

"лучше чем:

Dim strHTML as String
strHTML = "<div><ul><li>List item 1</li><li>List item 2</li><li>List item 3</li></ul></div>"

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

10.12.2008 17:02:31
7 ОТВЕТОВ
РЕШЕНИЕ

Я тоже не делаю. Вместо этого я:

  1. Создайте пользовательский элемент управления, который инкапсулирует желаемую конструкцию
  2. или (очень похоже) создать простой класс со свойствами, которые я хочу, и переопределить .ToString()метод для создания желаемого HTML.

Но из ваших двух вариантов есть несколько причин, по которым первое лучше:

  • Вы можете изменить свойства HTML-элементов управления или добавить другие элементы управления в дерево на более поздних этапах жизненного цикла страницы.
  • ASP.Net отвечает за рендеринг HTML. Вы гарантированно не будете иметь ошибок, которые могут нарушить соответствие XML.
2
15.09.2009 01:51:14

Это действительно ДЕЙСТВИТЕЛЬНО лучше в двух случаях:

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

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

0
10.12.2008 17:13:16

Одно большое преимущество: написание HTML в виде строки чрезвычайно подвержено человеческим ошибкам и может очень быстро стать нечитаемым и неуправляемым.

Сгенерированный HTML будет значительно лучше защищен от людей и самодокументирован.

(Для записи я презираю оба метода и использую XSLT для своих шаблонов)

2
10.12.2008 17:23:11

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

Попробуйте поискать «шаблоны шаблонов asp.net» для начала. Было бы неплохо, если бы существовала такая страница как asp.net. Дайте нам знать, если вы найдете один:

http://wiki.python.org/moin/Templating

1
10.12.2008 17:57:41

Лично я бы создал элементы управления только в том случае, если бы мне пришлось это сделать, так как многие HTML-коды Microsoft работают только в режиме причуд, и я согласен, что создание строк HTML ОЧЕНЬ подвержено ошибкам.

Я создаю XHTML с анализатором XML, а затем извлекаю .toString из объекта XMLDocument. Это многословно, но вывод всегда правильно отформатирован и всегда работает.

0
11.12.2008 01:01:21

Преимущество заключается в том, что код, сгенерированный ASP.NET, отображается по-разному в разных условиях. Версии браузеров, обновления / исправления программного обеспечения, тренды, дополнительные фреймворки и т. Д. Когда вы пишете HTML-код самостоятельно и просто выводите его на экран, он никогда не меняется. Это всегда будет то, что вы пишете.

Но, если вы добавите его с помощью .NET Objects (рекомендуемый способ), фактический код, отображаемый в браузере конечного пользователя, создается во время выполнения. Хороший пример, в котором используется «Набор инструментов адаптера управления CSS для ASP.NET 2.0», который меняет способ визуализации элементов управления .NET, изменяя метод по умолчанию для отображения элементов управления с использованием чистого CSS.

0
24.12.2008 03:37:29

Создавать элементы управления, как у вас, - это самое страшное в ASP.NET. MVC или подход с Partials - намного лучший (более легкий в обслуживании) способ создания HTML.

-1
2.08.2010 05:53:30
Это просто повторяет вопрос. Как и почему это лучше?
James A Mohler 16.12.2012 01:34:48