asp.net лучшая практика конкатенации строк

Я пытаюсь найти лучшие практики для генерации и вывода html, для которого сначала потребуется запрос к базе данных для получения информации. В настоящее время на странице aspx у меня есть div с сервером runat:

<div runat="server" id="leaflet"></div>

Теперь для начала небольшого тестирования у меня есть метод, который работает на page_load, который в основном делает:

private void BuildLeaflet(string qnid)
    {
    //gets leaflet details
    QueryLeafletDetails();
    //return concatenated content string
    leaflet.InnerHtml "<h1>" + dr["LSC Descriptor"] + "</h1>";
    }

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

Я ни в коем случае не думаю, что это лучшее решение, но что? StringBuilder? Могу ли я написать каждую часть по очереди на сайт, избегая объединения в методе? Серверный див даже лучше?

Редактировать: Забыл поместить некоторые из моих разделов контента, в которых уже есть простой (ограниченный) HTML, такой как абзац, список ... Это позволяет мне легко создавать документы для Интернета и печати, я просто использую разные таблицы стилей.

12.12.2008 11:55:33
3 ОТВЕТА
РЕШЕНИЕ

Я бы использовал <asp:Literal runat="server" enableViewState="false" id="leaflet" />. Это не создает никаких тегов на странице и не заполняет весь текст в ViewState.

И да, используйте StringBuilder, если вам нужно объединить много длинных строк. Это будет намного более эффективным с точки зрения памяти.

Другим решением будет посмотреть, сможете ли вы сделать некоторую фиксированную разметку на странице и поместить содержимое каждого поля БД в свой собственный элемент управления ( <asp:Literal />?).

4
12.12.2008 12:00:53

Я бы использовал либо string.Format, если число полей фиксированное (и относительно небольшое), либо StringBuilder, в противном случае. Читаемость кода была бы моим ориентиром, а не производительность. Вы также можете подумать об абстрагировании этого в UserControl, если вы планируете использовать его повторно. Затем вы можете задать ему настраиваемые свойства и встроить логику рендеринга в элемент управления, чтобы избежать повторения.

1
12.12.2008 12:18:30

Это сравнивали разные люди - формат iirc подходит для <4 элементов, простой конкатат для <7, для построения строк выше этого.

Я настоятельно рекомендую не создавать HTML как строки между прочим.

0
12.12.2008 12:06:33
С помощью string.Format вы довольно быстро узнаете, пропустили ли вы «конкатенацию» поля, даже если оно обычно равно нулю. Вы можете улучшить читабельность, сохранив формат как единственную строковую константу в другом месте кода и просто ссылаясь на него локально.
tvanfosson 12.12.2008 12:17:24
Я не понимаю, насколько уместен ваш первый пункт (вы в одно и то же время узнаете, если вы строитель строк или + ошибочен), и я не вижу, как ваш второй пункт относится к моему посту в частности? Очевидно, что у формата есть преимущества, или он не будет существовать.
annakata 12.12.2008 12:24:04