2009-08-03 52 views
0

我在每個頁面上都包含header.asp中的一組鏈接;這些鏈接的href屬性設置爲當前頁面加上鍊接ID參數。有時候,鏈接引用的頁面將有查詢字符串參數,但有時候不會。如果當前頁面URL包含linkID參數,我需要將其替換,否則我需要將其添加到當前URL。添加或替換經典ASP中的查詢字符串參數

我串聯Request.ServerVariables( 「SCRIPT_NAME 」)和Request.ServerVariables(「 QUERY_STRING」)爲變量頁面名來獲得當前頁面的URL。不幸的是,我正在使用經典的ASP/VBScript。

我想我需要使用reg ex,但我不擅長它,尤其是在經典的ASP中。當我需要替換元素時,問題出現了,因爲linkID參數的值可能會發生變化,所以簡單的Replace方法將不起作用。

+0

你現在在header.asp中有一個字符串的具體例子,當前頁面的URL和disired結果會有​​所幫助。通過完成創建測試數據的工作,您可以獲得更快的答案,而不是讓我們爲您想象。 – AnthonyWJones 2009-08-03 10:44:12

+0

感謝您的建議;我會確保未來的任何問題對讀者更有幫助。 – Rich 2009-08-03 11:03:29

回答

3

您可以檢查參數是否已經在查詢字符串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