Недавно я пытался объяснить программисту, почему в 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>"
? Не выглядит лучше. Посмотри на весь этот код! И это очень упрощенный пример для экономии места. Я не думаю, что когда-либо создавал бы такой список вручную, просто выполнял бы итерацию по коллекции или с помощью более продвинутого веб-элемента управления, но я пытаюсь проиллюстрировать это.





Это ДЕЙСТВИТЕЛЬНО лучше только в двух случаях:
С точки зрения кода это не лучшее решение. Они оба отлично работают, что касается дисплея.
Я тоже не делаю. Вместо этого я:
.ToString() для создания желаемого HTML.Но из двух вариантов есть пара причин, по которым первый лучше:
Одно большое преимущество: написание HTML в виде строки очень подвержено человеческим ошибкам и может очень быстро стать нечитаемым и неуправляемым.
Сгенерированный HTML будет значительно лучше защищен от людей и самодокументируется.
(Для записи я презираю оба метода и использую XSLT для создания шаблонов)
Вы можете предпочесть систему шаблонов, которую предоставляют большинство современных фреймворков для веб-разработки. Я не уверен в вариантах, доступных для ASP, но их должно быть несколько. Использование системы шаблонов позволяет вам воздерживаться от размещения какой-либо разметки в вашем коде или написания подробных блоков построения документа, как в двух примерах, которые вы приводите в своем вопросе.
Попробуйте поискать в Google "шаблоны шаблонов asp.net" для начала. Было бы неплохо, если бы для asp.net была такая страница. Сообщите нам, если найдете:
Лично я бы создал элементы управления только в том случае, если бы мне пришлось, так как большая часть HTML-кода Microsoft работает только в режиме quirks, и я согласен с тем, что создание HTML-строк ОЧЕНЬ подвержено ошибкам.
Я создаю XHTML с помощью анализатора XML, а затем беру .toString из объекта XMLDocument. Он подробный, но вывод всегда правильно отформатирован и всегда работает.
Преимущество заключается в том, что код, созданный ASP.NET, отображается по-разному в разных условиях. Версии браузеров, обновления / исправления программного обеспечения, тенденции, дополнительные фреймворки и т. д. Когда вы сами пишете HTML и просто выводите его на экран, он никогда не меняется. Он всегда будет тем, чем вы его напишете.
Но если вы добавите его с помощью .NET Objects (рекомендуемый способ), фактический код, который отображается в браузере конечного пользователя, создается во время выполнения. Хороший пример использования «CSS Control Adapter Toolkit для ASP.NET 2.0», который изменяет способ визуализации элементов управления .NET, изменяя метод по умолчанию для визуализации элементов управления с использованием чистого CSS.
Создание таких элементов управления, как у вас, - это самая худшая вещь в ASP.NET. MVC или подход с использованием Partials - гораздо лучший (более простой в обслуживании) способ создания HTML.
Это просто повторяет вопрос. Как и почему лучше?