Создание HTMLControls против вывода строки HTML - PullRequest
2 голосов
/ 10 декабря 2008

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

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

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

Почему

Dim divA as New HtmlControls.HtmlGenericControl("div") 
Dim ulList1 as New HtmlControls.HtmlGenericControl("ul") 
Dim liObj1, liObj2, liObj3 as New HtmlControls.HtmlGenericControl("li") 
liObj1.innerText = "List item 1" 
liObj2.innerText = "List item 2"
liObj3.innerText = "List item 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>"

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

Ответы [ 7 ]

2 голосов
/ 10 декабря 2008

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

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

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

2 голосов
/ 10 декабря 2008

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

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

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

  • Вы можете изменить свойства элементов управления html или добавить другие элементы управления в дерево на более поздних этапах жизненного цикла страницы
  • ASP.Net отвечает за рендеринг HTML. Вы гарантированно не будете иметь ошибок, которые могут нарушить соответствие XML.
1 голос
/ 10 декабря 2008

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

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

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

0 голосов
/ 02 августа 2010

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

0 голосов
/ 24 декабря 2008

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

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

0 голосов
/ 11 декабря 2008

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

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

0 голосов
/ 10 декабря 2008

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

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

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

...