Добавить или заменить параметр строки запроса в классическом ASP - PullRequest
0 голосов
/ 03 августа 2009

У меня есть набор ссылок в header.asp, который включен на каждую страницу; у этих ссылок атрибут href установлен на любую текущую страницу плюс параметр linkID. Иногда страница, на которую ссылается ссылка, будет иметь параметры строки запроса, но в других случаях это не так. Если URL текущей страницы уже содержит параметр linkID, мне нужно заменить его, в противном случае мне нужно добавить его к текущему URL.

Я объединяю Request.ServerVariables ("SCRIPT_NAME") и Request.ServerVariables ("QUERY_STRING") в переменную pagename , чтобы получить URL текущей страницы. К сожалению, я использую классический ASP / VBScript.

Я думаю, что мне нужно использовать reg ex, но я не эксперт в этом, особенно в классическом ASP. Проблема возникает, когда мне нужно заменить элемент, так как значение параметра linkID может варьироваться, поэтому простой метод Replace не будет работать.

1 Ответ

3 голосов
/ 03 августа 2009

Вы можете проверить, есть ли параметр в строке запроса Request.QueryString("linkID") = "", и просто добавить, если это не так, и использовать функцию для обновления значения, если оно есть. Примерно так будет хорошо, если у вас нет огромного количества параметров и вам не нужно массово оптимизировать, но тогда вы, вероятно, не будете использовать ASP.

Function updateQueryStringParam(key, value)

  Dim qs, x

  For Each x In Request.QueryString
    qs = qs & x & "="

    If x = key Then
      qs = qs & value & "&"
    Else
      qs = qs & Request.QueryString(x) & "&"
    End If
  Next

  If Len(qs) > 0 Then
    If Right(qs, 1) = "&" Then
      qs = Left(qs, Len(qs)-1)
    End If
  End If

  updateQueryStringParam = qs

End Function

Вы можете создать еще один вызов функции для проверки, а затем обновить ее, используя вышеуказанную функцию;

Function setQueryStringValue(key, value)

  Dim qs

  If Request.QueryString(key) = "" Then
    If Len(qs) > 0 Then
      qs = qs & "&"
    End If
    qs = key & "=" & value
  Else
    qs = updateQueryStringParam(key, value)
  End If

  setQueryStringValue = qs

End Function
...