2009-08-03 5 views
0

Ich habe eine Reihe von Links in header.asp, die auf jeder Seite enthalten ist; Für diese Links wird das href-Attribut auf die aktuelle Seite und einen LinkID-Parameter gesetzt. Manchmal hat die Seite, auf die der Verweis verweist, Abfragezeichenfolgenparameter, aber zu anderen Zeiten wird dies nicht der Fall sein. Wenn die aktuelle Seiten-URL den LinkID-Parameter bereits enthält, muss ich ihn ersetzen, anderenfalls muss ich ihn zur aktuellen URL hinzufügen.Hinzufügen oder Ersetzen eines Abfragezeichenfolgeparameters im klassischen ASP

I Request.ServerVariables ("SCRIPT_NAME ") und Request.ServerVariables (" QUERY_STRING") in eine Variable lan am verketten die aktuelle Seite URL zu erhalten. Leider verwende ich klassisches ASP/VBScript.

Ich denke, ich muss reg ex verwenden, aber bin nicht Experte darin, besonders nicht im klassischen ASP. Das Problem tritt auf, wenn ich das Element ersetzen muss, da der Wert des linkID-Parameters variieren kann, so dass die einfache Replace-Methode nicht funktioniert.

+0

Ein konkretes Beispiel für eine Zeichenfolge, die Sie derzeit in der header.asp haben, eine URL der aktuellen Seite und das gewünschte Ergebnis würde helfen. Sie erhalten viel schnellere Antworten, indem Sie die Leg-Arbeit der Erstellung der Testdaten durchführen, anstatt uns das dann für Sie vorstellen zu lassen. – AnthonyWJones

+0

Danke für den Hinweis; Ich werde sicherstellen, dass zukünftige Fragen für den Leser hilfreicher sind. – Rich

Antwort

3

Sie können überprüfen, ob der Parameter bereits in der Abfragezeichenfolge Request.QueryString("linkID") = "" ist, und einfach anhängen, falls dies nicht der Fall ist, und eine Funktion verwenden, um den Wert zu aktualisieren, falls er vorhanden ist. So etwas wird in Ordnung sein, solange Sie nicht über eine große Anzahl von Parametern verfügen und Sie nicht massiv optimieren müssen, aber dann würden Sie wahrscheinlich nicht ASP verwenden.

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 

Sie könnten einen anderen Funktionsaufruf für die Prüfung erstellen und dann mit der obigen Funktion aktualisieren;

+0

Danke, das hat Spaß gemacht. – Rich

+0

in Ihrer Funktion '' 'setQueryStringValue''' Variable' '' qs''' hat anfangs keinen Wert, also '' 'Len''' wird immer 0 sein. –

Verwandte Themen