Передача списков как QueryString - я должен использовать JSON - PullRequest
0 голосов
/ 29 ноября 2009

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

Я хочу передать критерии на пейджер через QueryString. Рост и возраст просты, так как это диапазоны, и я бы использовал

MinHeight=3&MaxHeight=12&MinAge=21&MaxAge=30

Однако другие критерии, такие как BodyType и Ethnic orgins, являются списками значений ForeignKey, например:

Ethnitity:2,3,5

Каков наилучший способ передать их как QueryString? Должен ли я преобразовать его в строку Json, например:

www.site.com?filterjson={\"minage\":0,\"maxage\":0,\"minheight\":0,\"maxheight\":0,\"bodytypelist\":[1,2,3],"ethnicitylist\":[2,3,4],\"eyecolorlist\":[],\"haircolorlist\":[],\"orientationlist\":[]}

Или это недопустимо / излишне / слишком сложно?

Может быть, что-то вроде этого:

MinHeight=3&MaxHeight=12&bodytypes=1,2,3&

и проанализировать значения списка, разделив ',' ?????

Я не знаю взлётов и падений всех этих идей. Итак, как бы вы передали список значений в строке запроса?

Ответы [ 2 ]

2 голосов
/ 30 ноября 2009

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

if (!string.IsNullOrEmpty(Request.QueryString["bodytypes"]))
{
   string[] rgs = Request.QueryString["bodytypes"].Split(new char[] { ',' });
}
0 голосов
/ 29 ноября 2009

Оба будут работать, хотя строку запроса гораздо легче "взломать". Однако, если у вас есть хорошая защита от злонамеренных / неожиданных значений, я говорю, что это хорошо.

Использование данных через строку запроса относительно проще, чем из JSON.

...