2010-08-12 8 views
1

Je l'ai fait il y a longtemps, maintenant je ne trouve pas la fonction. Il ne devrait pas être trop compliqué, mais je me demande s'il y a des nouvelles à ce sujet avant que je vais le faire à nouveau ...Classic ASP: gestionnaire de querystring

Prenez ceci:

www.example.com?query=whatever&page=1 

Maintenant, imaginez que j'appuyez sur le bouton à la page 2, il deviendra:

www.example.com?query=whatever&page=2 

Toujours garder le reste de la chaîne de requête intacte. Maintenant, image, page 2 J'appuie sur le bouton pour commander par date, il devrait se transformer en:

www.example.com?query=whatever&page=1&order=date 

Le problème est, sur le code ASP pour la commande, je ne veux pas gérer tous les querystring. Donc je besoin d'une fonction pour gérer pour moi et être en mesure de faire quelque chose comme les exemples suivants:

<a href="?<%= add_querystring(qs, "order", "date") %>">date</a> 
<a href="?<%= set_querystring(qs, "page", page + 1) %>">next page</a> 
<a href="?<%= add_querystring(del_querystring(qs, "page"), "allpages") %>">all pages</a> 

Ceci est juste une première idée de ce que je vais faire si je ne peux toujours pas trouver un prêt solution ... Encore une fois, je me demande s'il y a quelque chose de nouveau pour gérer tout cela d'une manière que je n'ai même pas encore imaginée.

Répondre

3

S'il est de l'intérêt de tout le monde, voici le code assez déroutant, je roulais hier:

'Build a string QueryString from the array Request 
function bdl_qs (req_qs) 
    dim result, qa, item 
    result = empty 
    qa = "?" 
    if isnull(req_qs) or isempty(req_qs) then req_qs = Request.QueryString 
    for each item in req_qs 
     result = result & qa & item 
     result = result & "=" & req_qs(item) 
     qa = "&" 
    next 
    bdl_qs = result 
end function 

'Build a string QueryString ontop of the supplied one, adding the query and/or value(s) to it 
function add_qs (qs, q, s) 
    dim result 
    result = qs 
    if left(result, 1) = "?" then 
     result = result & "&" & q 
    else 
     result = "?" & q 
    end if 
    if not isnull(s) and not isempty(s) then 
     result = result & "=" & s 
    end if 
    add_qs = result 
end function 

'Build a string QueryString ontop of the supplied one, removing the selected query and/or values 
function del_qs (qs, q) 
    dim result, item 
    result = qs 
    if left(qs, 1) = "?" then 
     dim rqs, qa 
     rqs = result 
     result = "?" 
     rqs = right(rqs, len(rqs)-1) 'remove the "?" 
     rqs = Split(rqs, "&") 'separate the queries 
     qa = "" 
     for each item in rqs 
      dim rq 
      rq = Split(item, "=") 'separate the query to analyze the name only 
      if rq(0) <> q then 'good for rebuilding 
       result = result & qa & item 
       qa = "&" 
      end if 
     next 
    end if 
    del_qs = result 
end function 

'Build a string QueryString ontop of the supplied one, setting the query to the value 
function set_qs (qs, q, s) 
    set_qs = add_qs(del_qs(qs, q), q, s) 
end function