2009-08-03 49 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