Репитер против струнного строителя - PullRequest
1 голос
/ 04 января 2011

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

Цель: Получить набор пар (текст, значение) по разным причинам. Одним из примеров этого является получение алфавита, каждая буква будет использоваться в качестве якоря или LinkButton, текстовое значение будет буквой, а событие click будет принимать часть значения пары и помещать ее в stringFormat (). сформировать «Параметризованный URL»

Я использовал два подхода для этой цели, но я не знаю, что лучше!

1. Использование повторителя

Повторитель, который будет иметь LinkButton в своем ItemTemplate и через эти блоки и будет устанавливать для текста значение 'text', используя eval и 'value' для создания QueryString.

2. Использование StringBuilder

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

Links_strngBuilder.Append(string.Format("<a href='/data.aspx?page={0}'>{0}</a>", chrctr))

и, наконец, преобразуйте экземпляр String Builder в строку и назначьте его метке

Примечание: поля текста и значений chrctr будут извлечены, как вы предлагаете [в каждом цикле из базы данных] или [загружаются в массив / arrayList / List <> для хранения значений и сохранения всех этих соединений в дБ]

Ответы [ 3 ]

1 голос
/ 04 января 2011

Я ничего не знаю о том, как эти два подхода (с точки зрения использования памяти и скорости) сравниваются друг с другом, но я бы определенно выбрал Repeater, потому что:

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

- Павел

1 голос
/ 04 января 2011

Там, где я работаю, мы никогда не будем использовать stringbuild из-за дизайнера. Мы не хотим, чтобы в коде был дизайнер, если он должен сделать простое изменение. так что держите разметку в представлении и codebehind в codebehind.

Редактировать

Другое преимущество повторителя заключается в том, что смена цикла гораздо проще. Не нужно перекомпилировать и, возможно, заново развернуть настройки интерфейса, просто отредактируйте шаблон ASPX, сохраните и обновите.

0 голосов
/ 04 января 2011

Я думаю, что создание выходных данных больше соответствует стороне клиента (например, когда вы делаете вызов ajax и хотите показать результаты в html), чем стороне сервера, за исключением случаев, когда вы создаете пользовательский серверный элемент управления.Если вы используете ретранслятор, у вас есть опция расширяемости при изменении требований, и у вас есть больше контроля и возможностей (таких как обработка событий и стилизация с помощью css и т. д.).

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