Классический ASP: обработчик строки запроса - PullRequest
1 голос
/ 12 августа 2010

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

Возьми это:

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>

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

1 Ответ

3 голосов
/ 13 августа 2010

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

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