2010-08-12 7 views
1

Я сделал это давным-давно, теперь я не могу найти функцию. Она не должна быть слишком сложной, но мне интересно, если есть какие-нибудь новости об этом, прежде чем пойти и сделать это снова ...Классический ASP: обработчик querystring

Отнесите:

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

Теперь представьте, я нажимаю кнопку на странице 2, это станет следующим:

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

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

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

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

<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> 

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

ответ

3

Если это из чьего интереса, вот довольно запутанный код, который я прокатка вчера:

'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 
Смежные вопросы