AJOUTER DES PARAMÈTRES À UNE URL

cs_Pierrrot Messages postés 54 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 6 mai 2007 - 11 sept. 2005 à 21:27
georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007 - 15 juin 2009 à 11:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32756-ajouter-des-parametres-a-une-url

georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007
15 juin 2009 à 11:05
Merci j'ai fait une rapide transcription des méthodes en C#.

/// <summary>
/// Rajoute des paramètres à l'url en cour
/// </summary>
/// Collection de paires de clés valeurs

/// <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>
/// Dictionnaire contenant la valeur a réjouté

/// <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>
/// clé à rajouter

/// valeur a rajouté

/// <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");
}
}
cs_Pierrrot Messages postés 54 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 6 mai 2007
11 sept. 2005 à 21:27
Salut,
Merci, je cherchais justement une petite source dans ce contexte.