Passare le liste come QueryString - dovrei usare JSON
-
06-07-2019 - |
Domanda
Diciamo che ho un sito di incontri online, gli utenti possono filtrare l'elenco degli utenti in base a vari criteri, altezza, età, tipo di corpo, origine etnica ....
Voglio passare i criteri al cercapersone, tramite QueryString. L'altezza e l'età sono facili in quanto si tratta di intervalli e io userei
MinHeight=3&MaxHeight=12&MinAge=21&MaxAge=30
Tuttavia, altri criteri come BodyType e le orgine etniche sono elenchi di valori ForeignKey, ad esempio:
Ethnitity:2,3,5
Qual è il modo migliore per passare questi come QueryString? Devo convertirlo in una stringa Json ad esempio:
www.site.com?filterjson={\"minage\":0,\"maxage\":0,\"minheight\":0,\"maxheight\":0,\"bodytypelist\":[1,2,3],"ethnicitylist\":[2,3,4],\"eyecolorlist\":[],\"haircolorlist\":[],\"orientationlist\":[]}
O questo non è valido / eccessivo / troppo complesso?
Forse qualcosa del genere:
MinHeight=3&MaxHeight=12&bodytypes=1,2,3&
e analizza i valori dell'elenco suddividendo ',' ?????
Non conosco gli alti e bassi di tutte queste idee. Quindi come passeresti un elenco di valori in una stringa di query?
Soluzione
L'utilizzo dei valori separati da virgola è l'approccio più pragmatico secondo me. Puoi usare questo codice per dividere i valori:
if (!string.IsNullOrEmpty(Request.QueryString["bodytypes"]))
{
string[] rgs = Request.QueryString["bodytypes"].Split(new char[] { ',' });
}
Altri suggerimenti
Entrambi funzioneranno, sebbene la querystring sia molto più facile da "hackerare". Tuttavia, se lo hai ben protetto da valori dannosi / imprevisti, dico che va bene.
Il consumo di dati tramite querystring è relativamente più semplice rispetto a JSON.