Использовать идентификатор или индекс для выбора элементов управления? - PullRequest
0 голосов
/ 04 августа 2011

Привет,

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

<select>
<option value="">Miles</option>
<option value="0">100 miles</option>
<option value="1">200 miles</option>
<option value="2">300 miles</option>
</select>

Сюда также могут относиться страны, города и т. Д.

Тексттолько для отображения, но значение должно быть сопоставлено некоторому объекту на стороне сервера.

Вопрос в том, должно ли значение быть идентификатором выбранного объекта или оно должно быть просто выбранным индексом?

  • Если мы используем Id, это может означать, что через некоторое время мы получим большие числа, если данные mata сильно изменятся, например, id одного параметра может быть 32000. Бог с этимчто никогда не будет проблемой узнать, какое значение выбрал пользователь.

  • Если вместо этого мы возьмем список вариантов на сервере и упорядочим его по заданному свойству, после этого мыгенерировать значение / идентификатор, начиная с 0 и выше.Это заставит HTML выглядеть лучше, и нам никогда не придется задумываться о значительных изменениях в метаданных, которые приводят к большим значениям.Проблема заключается в том, что при сопоставлении его с объектом на стороне сервера, нам придется снова упорядочить список (кешируется maby, чтобы избежать этого), а затем проверить соответствие.Другая проблема заключается в том, что если метаданные будут изменены, то даже если пользователь выберет индекс 3, который является объектом с идентификатором 2304, он вместо этого получит объект с идентификатором 2302.

У меня естьПосмотрел пару страниц, но когда речь идет о фильтрах, таких как мили и годы, кажется, что эти индексы отсчитываются от 0 (мой второй выбор):

Ответы [ 3 ]

1 голос
/ 04 августа 2011

обычно вы хотите, чтобы значение было ключом к элементу в базе данных, поэтому вы знаете, что оно не изменится.Не имеет значения, может ли значение быть большим, поскольку это действительно строка (поэтому значение = "388283" не больше значения = "оранжевый")

1 голос
/ 04 августа 2011

Если мы используем Id, это может означать, что через некоторое время мы получим большие числа, если сильно изменятся данные mata, например, идентификатор одной опции может быть 32000.

Большинство людейне считайте это проблемой.

[value == index] заставит HTML выглядеть лучше

Я не думаю, что это действительно имеет значение.Не многие люди будут смотреть на ваш источник и беспокоиться о длине ваших value s.

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

Действительно.Какая реальная проблема со значением == индекс.Я бы определенно избегал этого в пользу значения == уникального идентификатора.

, когда речь идет о фильтрах, таких как мили и годы, которые выглядят как индексы подсчета, начинающиеся с 0

На самом деле не могу сказать, является ли это индекс или идентификатор.Это может быть идентификатор объекта БД, представляющий «100 миль», или предопределенный тип Enum, где 0 == 100 миль.В любом случае вы можете переупорядочить опции, ничего не нарушая.

1 голос
/ 04 августа 2011

У вас есть значение и selectedIndex .Нет необходимости в ID , в индексе подразумевается .

То, что происходит на сервере, является проблемой базы данных и не связано с пользовательским интерфейсом.

...