Ejemplo n.º 1
0
        public static string AppendQueryStringToUrl(string OriginalUrl, string QsKey, string QsValue, string AppendMatchingTagDelim = "", string NewAnchor = "")
        {
            return(Urls.AppendQueryStringToUrl(OriginalUrl, QsKey, QsValue, AppendMatchingTagDelim, NewAnchor));

            var url = new Uri(OriginalUrl);

            return(AppendQueryStringToUrl(url, QsKey, QsValue, AppendMatchingTagDelim, NewAnchor));
        }
Ejemplo n.º 2
0
        public static string AppendQueryStringToUrl(Uri OriginalUri, string QsKey, string QsValue, string AppendMatchingTagDelim = "", string NewAnchor = "")
        {
            return(Urls.AppendQueryStringToUrl(OriginalUri, QsKey, QsValue, AppendMatchingTagDelim, NewAnchor));

            var uri = OriginalUri;

            var baseUrl  = uri.AbsoluteUri;
            var basePath = uri.AbsolutePath;

            //Anchor Tag
            var currAnchor     = uri.Fragment.Replace("#", "");
            var providedAnchor = NewAnchor.Replace("#", "");
            var newAnchor      = "";

            if (currAnchor != "")
            {
                if (NewAnchor != "")
                {
                    newAnchor = providedAnchor;
                }
                else
                {
                    newAnchor = currAnchor;
                }

                newAnchor = "#" + newAnchor;
            }
            else
            {
                newAnchor = providedAnchor;
            }

            //Query String Values
            var qs              = GetQueryStringDictionary(uri.Query);
            var allQs           = "&";
            var newKeyProcessed = false;

            foreach (var item in qs)
            {
                if (item.Key == QsKey)
                {
                    //matches the new KV - process
                    newKeyProcessed = true;
                    if (QsValue != "")
                    {
                        if (AppendMatchingTagDelim != "")
                        {
                            var currVals = item.Value.Split(AppendMatchingTagDelim.ToCharArray());
                            if (!currVals.Contains(QsValue))
                            {
                                //append value to existing
                                allQs = string.Format("{0}&{1}={2}{3}{4}", allQs, QsKey, item.Value, AppendMatchingTagDelim, QsValue);
                            }
                        }
                        else
                        {
                            //replace value
                            allQs = string.Format("{0}&{1}={2}", allQs, QsKey, QsValue);
                        }
                    }
                    else
                    {
                        //remove tag - skip
                    }
                }
                else
                {
                    //Just append it as-is
                    allQs = string.Format("{0}&{1}={2}", allQs, item.Key, item.Value);
                }
            }

            if (!newKeyProcessed && QsValue != "")
            {
                //Wasn't in current URI, needs to be added
                allQs = string.Format("{0}&{1}={2}", allQs, QsKey, QsValue);
            }

            allQs = allQs.Replace("&&", "");

            //Build New Url
            var newUrl = string.Format("{0}?{1}{2}", basePath, allQs, newAnchor);

            newUrl = newUrl.Replace("?&", "?"); //Cleanup if all QS have been removed
            //uri.Rewrite(newUrl);

            return(newUrl);
        }