asp.net лучшая практика конкатенации строк - PullRequest
1 голос
/ 12 декабря 2008

Я пытаюсь найти лучший метод для генерации и вывода 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, такой как параграф, список ... Это позволяет мне легко создавать документы для Интернета и печати, я просто использую разные таблицы стилей.

Ответы [ 3 ]

4 голосов
/ 12 декабря 2008

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

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

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

1 голос
/ 12 декабря 2008

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...