Soyez le premier à donner votre avis sur cette source.
Snippet vu 25 896 fois - Téléchargée 30 fois
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
15 juin 2009 à 11:05
/// <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");
}
}
11 sept. 2005 à 21:27
Merci, je cherchais justement une petite source dans ce contexte.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.