2009-08-03 10 views
0

J'ai un ensemble de liens dans header.asp qui est inclus sur chaque page; ces liens ont leur attribut href défini sur la page en cours plus un paramètre linkID. Parfois, la page des références de liens aura des paramètres de chaîne de requête, mais d'autres fois ce ne sera pas le cas. Si l'URL de la page en cours contient déjà le paramètre linkID, je dois le remplacer, sinon je dois l'ajouter à l'URL actuelle.Ajouter ou remplacer un paramètre de chaîne de requête dans ASP classique

Je concaténer Request.ServerVariables ("SCRIPT_NAME ") et Request.ServerVariables (" QUERY_STRING") dans une variables nompage pour obtenir l'URL de la page actuelle. Malheureusement, j'utilise ASP/VBScript classique.

Je pense que je dois utiliser reg ex mais je ne suis pas expert en la matière, surtout pas en ASP classique. Le problème vient quand j'ai besoin de remplacer l'élément car la valeur du paramètre linkID peut varier, ainsi la simple méthode Replace ne fonctionnera pas.

+0

Un exemple concret d'une chaîne que vous avez actuellement dans header.asp, une URL de la page en cours et le résultat souhaité vous seront utiles. Vous obtenez des réponses beaucoup plus rapides en faisant le travail de création de données de test, plutôt que de nous faire imaginer cela pour vous. – AnthonyWJones

+0

Merci pour le conseil; Je ferai en sorte que toute question future soit plus utile pour le lecteur. – Rich

Répondre

3

Vous pouvez vérifier si le paramètre est déjà dans la chaîne de requête Request.QueryString("linkID") = "" et ajouter simplement si ce n'est pas le cas et utiliser une fonction pour mettre à jour la valeur si elle est présente. Quelque chose de ce genre ira bien tant que vous n'avez pas un grand nombre de paramètres et que vous n'avez pas besoin d'optimiser massivement mais que vous n'utiliserez probablement pas 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 

Vous pouvez créer un autre appel de fonction pour la vérification, puis mettre à jour en utilisant la fonction ci-dessus;

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 
+0

Merci, cela a fonctionné un régal. – Rich

+0

dans votre fonction '' 'setQueryStringValue''' La variable' '' qs''' n'a pas de valeur initialement, donc '' '' Len''' sera toujours 0. –

Questions connexes