begin process at 2010 02 10 00:43:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > AJOUTER DES PARAMÈTRES À UNE URL

AJOUTER DES PARAMÈTRES À UNE URL


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :ajouter, paramètres, url, querystring, lien Niveau :Débutant Date de création :17/07/2005 Vu :19 895

Auteur : jesusonline

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

Une fonction permettant de rajouter des url à la page courante.

Il y a 3 signature différente ainsi on peut appeller la fonction en passant un dictionnaire, une keyvaluepair (un objet contenant une clé et une valeur) ou enfin  2 string contenant une valeur et une clé.

J'utilise .net 2 et les generics pour cette fonction car c'est beaucoup plus facile, mais il n'y a rien de compliqué à le rendre compatible avec .net 1.1

Je me sert enormement de cette classe pour mes customControls :)

Exemple d'utilisation :

Dans ma page j'ai ca :

    Dim params As New Dictionary(Of String, Object)
    params.Add("MyPostBack", Me.UniqueID)
    params.Add("TabIndex", i)
    lit1.text = "<a href=""" & Util.AddParameterToUrl(params) & """>Mon Texte</a>"


Dans la page si l'url est :

/Default6.aspx

la function retournera :

/Default6.aspx?MyPostBack=TabStrip1&TabIndex=1

Si de nouveau on clique sur un autre lien (vous avez remarquer que j'ai un paramètre i, donc un compteur ;))

/Default6.aspx?MyPostBack=TabStrip1&TabIndex=1

pourra me renvoyer vers

/Default6.aspx?MyPostBack=TabStrip1&TabIndex =4


et si l'on a d'autres paramètres à l'url par exemple l'url origine est

/Default6.aspx?titi=tata&toto=truc

la nouvelle adresse sera

http://localhost:1744/TestWebSite/Default6.aspx? MyPostBack=TabStrip1&TabIndex=3&titi=tata&toto=tru c

Source

  • Imports System.Web
  • Imports System.Web.UI
  • Imports System.Text
  • Public Class Util
  • ''' <summary>
  • ''' Rajoute des paramètres à l'url en cour
  • ''' </summary>
  • ''' <param name="Dicos">Collection de paires de clés valeurs </param>
  • ''' <returns>l'url avec les nouveaux paramètres</returns>
  • ''' <remarks></remarks>
  • Shared Function AddParameterToUrl(ByVal Dicos As Dictionary(Of String, Object)) As String
  • Dim sb As New stringbuilder
  • 'on verifie qu'il existe une requete
  • If Not System.Web.HttpContext.Current Is Nothing Then
  • Dim Request As HttpRequest = System.Web.HttpContext.Current.Request
  • 'ajout de l'url sans les params
  • sb.Append(GetPathAndScriptOnly)
  • If Not IsNothing(Dicos) AndAlso Dicos.Count > 0 Then
  • sb.Append("?")
  • 'on rajoute les params de notre dicos
  • For Each Def As KeyValuePair(Of String, Object) In Dicos
  • sb.AppendFormat("{0}={1}&", Def.Key, HttpUtility.UrlEncode(CStr(Def.Value)))
  • Next
  • 'on rajoute les params qui etaient déjà dans l'url
  • For Each key As String In Request.QueryString.Keys
  • 'Si dicos possede la valeur alors on l'a déjà ajouté
  • If Not Dicos.TryGetValue(key, Nothing) Then
  • sb.AppendFormat("{0}={1}&", key, Request.QueryString(key))
  • End If
  • Next
  • Else
  • 'c'est pas parce que dico est vide qu'on doit pas mettre les anciens paramètres
  • For Each key As String In Request.QueryString.Keys
  • sb.AppendFormat("{0}={1}&", key, Request.QueryString(key))
  • Next
  • End If
  • Else
  • Throw New System.Web.HttpException("Request is nothing")
  • End If
  • ' On enleve le & de fin si présent
  • If sb.ToString.EndsWith("&"c) Then
  • Return sb.ToString.Remove(sb.ToString.Length - 1)
  • Else
  • Return sb.ToString
  • End If
  • End Function
  • ''' <summary>
  • ''' Rajoute des paramètres à l'url en cours
  • ''' </summary>
  • ''' <param name="valuePair">Dictionnaire contenant la valeur a réjouté</param>
  • ''' <returns>l'url avec les nouveaux paramètres</returns>
  • ''' <remarks></remarks>
  • Shared Function AddParameterToUrl(ByVal valuePair As KeyValuePair(Of String, Object)) As String
  • Dim dicos As New Dictionary(Of String, Object)
  • dicos.Add(valuePair.Key, valuePair.Value)
  • Return AddParameterToUrl(dicos)
  • End Function
  • ''' <summary>
  • ''' Rajoute des paramètres à l'url en cours
  • ''' </summary>
  • ''' <param name="key">clé à rajouter</param>
  • ''' <param name="value">valeur a rajouté</param>
  • ''' <returns>l'url avec les nouveaux paramètres</returns>
  • ''' <remarks></remarks>
  • Shared Function AddParameterToUrl(ByVal key As String, ByVal value As String) As String
  • Dim dicos As New Dictionary(Of String, Object)
  • dicos.Add(key, value)
  • Return AddParameterToUrl(dicos)
  • End Function
  • ''' <summary>
  • ''' Retourne l'url sans les paramètres querystring
  • ''' </summary>
  • ''' <returns></returns>
  • ''' <remarks></remarks>
  • Shared Function GetPathAndScriptOnly() As String
  • If Not System.Web.HttpContext.Current Is Nothing Then
  • Dim TmpPathAndScript As String = System.Web.HttpContext.Current.Request.ServerVariables("script_name") & ""
  • If InStr(TmpPathAndScript, "//") > 0 Then
  • TmpPathAndScript = Replace(TmpPathAndScript, "//", "/")
  • End If
  • Return TmpPathAndScript
  • Else
  • Throw New System.Web.HttpException("Request is nothing")
  • End If
  • End Function
  • End Class
Imports System.Web
Imports System.Web.UI
Imports System.Text


Public Class Util

    ''' <summary>
    ''' Rajoute des paramètres à l'url en cour
    ''' </summary>
    ''' <param name="Dicos">Collection de paires de clés valeurs </param>
    ''' <returns>l'url avec les nouveaux paramètres</returns>
    ''' <remarks></remarks>
    Shared Function AddParameterToUrl(ByVal Dicos As Dictionary(Of String, Object)) As String

        Dim sb As New stringbuilder

        'on verifie qu'il existe une requete
        If Not System.Web.HttpContext.Current Is Nothing Then
            Dim Request As HttpRequest = System.Web.HttpContext.Current.Request

            'ajout de l'url sans les params 
            sb.Append(GetPathAndScriptOnly)

            If Not IsNothing(Dicos) AndAlso Dicos.Count > 0 Then
                sb.Append("?")

                'on rajoute les params de notre dicos
                For Each Def As KeyValuePair(Of String, Object) In Dicos
                    sb.AppendFormat("{0}={1}&", Def.Key, HttpUtility.UrlEncode(CStr(Def.Value)))
                Next

                'on rajoute les params qui etaient déjà dans l'url
                For Each key As String In Request.QueryString.Keys
                    'Si dicos possede la valeur alors on l'a déjà ajouté 
                    If Not Dicos.TryGetValue(key, Nothing) Then
                        sb.AppendFormat("{0}={1}&", key, Request.QueryString(key))
                    End If
                Next

            Else
                'c'est pas parce que dico est vide qu'on doit pas mettre les anciens paramètres
                For Each key As String In Request.QueryString.Keys
                    sb.AppendFormat("{0}={1}&", key, Request.QueryString(key))
                Next

            End If

        Else
            Throw New System.Web.HttpException("Request is nothing")
        End If

        ' On enleve le & de fin si présent
        If sb.ToString.EndsWith("&"c) Then
            Return sb.ToString.Remove(sb.ToString.Length - 1)
        Else
            Return sb.ToString
        End If
    End Function

    ''' <summary>
    ''' Rajoute des paramètres à l'url en cours
    ''' </summary>
    ''' <param name="valuePair">Dictionnaire contenant la valeur a réjouté</param>
    ''' <returns>l'url avec les nouveaux paramètres</returns>
    ''' <remarks></remarks>
    Shared Function AddParameterToUrl(ByVal valuePair As KeyValuePair(Of String, Object)) As String
        Dim dicos As New Dictionary(Of String, Object)
        dicos.Add(valuePair.Key, valuePair.Value)
        Return AddParameterToUrl(dicos)
    End Function

    ''' <summary>
    ''' Rajoute des paramètres à l'url en cours
    ''' </summary>
    ''' <param name="key">clé à rajouter</param>
    ''' <param name="value">valeur a rajouté</param>
    ''' <returns>l'url avec les nouveaux paramètres</returns>
    ''' <remarks></remarks>
    Shared Function AddParameterToUrl(ByVal key As String, ByVal value As String) As String
        Dim dicos As New Dictionary(Of String, Object)
        dicos.Add(key, value)
        Return AddParameterToUrl(dicos)
    End Function


    ''' <summary>
    ''' Retourne l'url sans les paramètres querystring
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Shared Function GetPathAndScriptOnly() As String
        If Not System.Web.HttpContext.Current Is Nothing Then
            Dim TmpPathAndScript As String = System.Web.HttpContext.Current.Request.ServerVariables("script_name") & ""
            If InStr(TmpPathAndScript, "//") > 0 Then
                TmpPathAndScript = Replace(TmpPathAndScript, "//", "/")
            End If
            Return TmpPathAndScript
        Else
            Throw New System.Web.HttpException("Request is nothing")
        End If
    End Function

End Class

 Conclusion

Pour l'instant j'ai pas vu de bug mais je ne suis pas sur d'avoir géré tous les cas.

Si vous voyez des bugs etc... merci de me le dire. Tous commentaires sont la bienvenus ;)


 Sources du même auteur

Source .NET (Dotnet) RESPONSE.FILTER : MANIPULATION DU STREAM DE SORTIE ASP.NET
Source avec Zip Source .NET (Dotnet) OPTIMISATION DE LA SERIALISATION JSON POUR LES LIST<T>
Source avec Zip Source .NET (Dotnet) CRAWLABLELINKBUTTON : UPDATEPANEL ET RÉFÉRENCEMENT
Source .NET (Dotnet) POSTBACKCONTROL - COMMUNICATION CLIENT/SERVEUR AVEC LES UPDA...
Source avec Zip Source .NET (Dotnet) COMPACTER DU JAVASCRIPT

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CUSTOM DATEPIKER DÉRIVANT DE COMPOSITECONTROL par fredzool
Source avec Zip UN MODULE POUR APPRENDRE SQL par Elmarzougui
Source avec Zip Source .NET (Dotnet) BOUTON QUI EMPECHE LE MULTI CLIC AVANT LA FIN DU TRAITEMENT.... par fredzool
Source avec Zip Source .NET (Dotnet) BOUTON AVEC CSS ET USERCONTROL WITH EVENT par fredzool
Source avec Zip Source .NET (Dotnet) CAPTCHA ASP.NET ET JAVASCRIPT par vaan3713

 Sources en rapport avec celle ci

Source .NET (Dotnet) VERIFIER L'EXITENCE D'UN URL par fouedelapoche
Source .NET (Dotnet) VARIABLES GET,POST,SERVER COMME EN PHP par poppyto
Source .NET (Dotnet) AJOUT DE LIEN DYNAMIQUE DANS LE TEXTE par jesusonline
EXTRAIRE DES VARIABLES D'UN URL EN JAVASCRIPT par Bud
CONVERTIR UNCHAMP PASSÉ EN URL EN FORMAT STRING par rcolas

Commentaires et avis

Commentaire de Pierrrot le 11/09/2005 21:27:26

Salut,
Merci, je cherchais justement une petite source dans ce contexte.

Commentaire de georgeduke le 15/06/2009 11:05:19

Merci j'ai fait une rapide transcription des méthodes en C#.

        /// <summary>
        /// Rajoute des paramètres à l'url en cour
        /// </summary>
        /// <param name="Dicos">Collection de paires de clés valeurs </param>
        /// <returns>l'url avec les nouveaux paramètres</returns>
        /// <remarks></remarks>
        public static string AddParameterToUrl(Dictionary<string, object> Dicos)
        {

            StringBuilder sb = new StringBuilder();

            //on verifie qu'il existe une requete
            if (System.Web.HttpContext.Current != null)
            {
                HttpRequest Request = System.Web.HttpContext.Current.Request;

                //ajout de l'url sans les params
                sb.Append(GetPathAndScriptOnly());

                if (Dicos != null && Dicos.Count > 0)
                {
                    sb.Append("?");

                    //on rajoute les params de notre dicos
                    foreach (KeyValuePair<string, object> Def in Dicos)
                    {
                        sb.AppendFormat("{0}={1}&", Def.Key, HttpUtility.UrlEncode((String)Def.Value));
                    }
                    //on rajoute les params qui etaient déjà dans l'url
                    foreach (String key in Request.QueryString.Keys)
                    {
                        //Si dicos possede la valeur alors on l'a déjà ajouté
                        object obj;
                        if (!Dicos.TryGetValue(key, out obj))
                        {
                            sb.AppendFormat("{0}={1}&", key, Request.QueryString[key]);
                        }
                    }
                }
                else
                {
                    //c'est pas parce que dico est vide qu'on doit pas mettre les anciens paramètres
                    foreach (String key in Request.QueryString.Keys)
                    {
                        sb.AppendFormat("{0}={1}&", key, Request.QueryString[key]);
                    }
                }
            }
            else
            {
                throw new System.Web.HttpException("Request is nothing");
            }
            // On enleve le & de fin si présent
            if (sb.ToString().EndsWith("&"))
                return sb.ToString().Remove(sb.ToString().Length - 1);
            else
                return sb.ToString();
        }

        /// <summary>
        /// Rajoute des paramètres à l'url en cours
        /// </summary>
        /// <param name="valuePair">Dictionnaire contenant la valeur a réjouté</param>
        /// <returns>l'url avec les nouveaux paramètres</returns>
        /// <remarks></remarks>
        public static string AddParameterToUrl(KeyValuePair<string, Object> valuePair)
        {
            Dictionary<string, Object> dicos = new Dictionary<string, object>();
            dicos.Add(valuePair.Key, valuePair.Value);
            return AddParameterToUrl(dicos);
        }

        /// <summary>
        /// Rajoute des paramètres à l'url en cours
        /// </summary>
        /// <param name="key">clé à rajouter</param>
        /// <param name="value">valeur a rajouté</param>
        /// <returns>l'url avec les nouveaux paramètres</returns>
        /// <remarks></remarks>
        public static string AddParameterToUrl(String key, String value)
        {
            Dictionary<String, Object> dicos = new Dictionary<string, object>();
            dicos.Add(key, value);
            return AddParameterToUrl(dicos);
        }

        /// <summary>
        /// Retourne l'url sans les paramètres querystring
        /// </summary>
        /// <returns></returns>
        /// <remarks></remarks>
        public static string GetPathAndScriptOnly()
        {
            if (System.Web.HttpContext.Current != null)
            {
                String TmpPathAndScript = System.Web.HttpContext.Current.Request.ServerVariables["script_name"] + "";
                if (TmpPathAndScript.IndexOf("//") > 0)
                {
                    TmpPathAndScript = TmpPathAndScript.Replace("//", "/");
                }

                return TmpPathAndScript;
            }
            else
            {
                throw new System.Web.HttpException("Request is nothing");
            }
        }

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

monsite.com/page.asp?Val=titre_du_fichier_appele [ par lionfromparis ] Comment est ce que l'on construit ce type d'url sachant que le fichier final est un fichier et n'est pas une donnée (donc seul le lien est dans une ba URL, QueryString et cie [ par neoprg ] Bonjour,Je souhaite, après validation d'un formulaire en method get qui appelle la même page, avoir une URL sans queryString ... cela est il possible problème taille url [ par lucier ] Bonjour, Je suis en train de travailler sur une application aspx et je voudrais que lorsque je clique sur un boutton, il me redirige sur une autre url Tester l'existance d'une URL [ par aurest ] Salut,Je voudrait inserer un lien vers un site FPT. Mais je voudrais pouvoir verifier que le lien que je génère me renvois bien sur qlq chose.Comment url avec une variable [ par eryk17 ] Est ce que qq1 pourrait m'aider , je voudrai créer un formulaire ou le client pourra saisir le nom de la page ou son lien pourra y allé.Par exemple en Ajouter des paramètres à un UserControl [ par dai2 ] Bonjour,J'essaye de créer un UserControl en C# auquel je souhaite ajouter des paramètres. C'est à dire de l'appeler dans ma page aspx&lt;uc1:MyControl url et majuscules [ par Chris_LaFouine ] Lorsque je clique sur un lien... il arrive que dans l'url, il y ait des param&#232;tres en majuscule accentu&#233;es, le probl&#232;me est que ces par Envoie de paramètres dans une URL [ par elpens ] Bonjour,Etant d&#233;butant en asp.net, je recherche a "poster" plusieurs param&#232;tres au travers de mon url. Pour ce, je proc&#232;de de la mani&# recuperation de variable dans une url pour la mettre dans une autre url [ par cedricperes ] Bonjour   Dans l'appli web C# ASP.NET que je développe, j'envoie a un moment donné un mail qui contient un lien vers mon appli :         http://monapp Valider le lien url s'il est existant [ par BrokenArrow29 ] Bonjour,Voila mon problème je cherche une facon de valider en asp.net avec une fonction (vb.net) si le url est existant avant de l'envoyer a mon RSS n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales