none
QueryString güncelleme/silme RRS feed

  • Soru

  • Merhaba arkadaşlar takıldığım bir konuda fikir danışacağım.

    Bir QueryString'in üzerinde güncellemeler yapmak istiyorum ve örneğin;

    test.aspx?marka=1

    her seçimde yeni bir value ekletmek yerine otomatik olarak ikinci değerine

    test.aspx?marka=1,2 şeklinde yanına virgül ile öncekini koruyarak koymak istiyorum.

    Bunu Scriptler ile history.pushState kullanbarak yapmak mümkün fakat her projede bunla uğraşmak sıkıcı.

    Onun yerine bir metot yazıp bu şekildede işlem yapabilmek istiyorum araştırdığım makaleler genelde o Querystring'in var olan değerini silip yeni değeri Set ediyor veya siliyor.

    6 Kasım 2013 Çarşamba 09:46

Yanıtlar

  • Teşekkürler arkadaşlar bilgiler için.

    Şu şekilde bir çözüm üretebildim. İşime yarıyor ihtiyacı olan arkadaşlar için;

            public static string QueryStringEkle(string queryIsmi, string queryDegeri)
            {
                string mevcutQueryler = "?";
                bool eklendiMi = false;
                bool mevcutMu = false;
                NameValueCollection olanQueryler = new NameValueCollection();
                olanQueryler = HttpContext.Current.Request.QueryString;
    
                for (int i = 0; i < olanQueryler.Count; i++)
                {
                    if (olanQueryler.GetKey(i) == queryIsmi)
                    {
                        foreach (var deger in olanQueryler.Get(i).Split(',').ToList())
                        {
                            if (deger == queryDegeri)
                            {
                                mevcutMu = true;
                                break;
                            }
                        }
    
                        eklendiMi = true;
                        if (mevcutMu == false)
                            mevcutQueryler = mevcutQueryler + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i) + "," + queryDegeri;
                        else
                            mevcutQueryler = mevcutQueryler + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i);
                    }
                    else
                    {
                        // Burada var olan tum QueryStringleri degiskene aktariyoruz
                        if (mevcutQueryler == "?")
                            mevcutQueryler = mevcutQueryler + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i) + "&";
                        else
                            mevcutQueryler = mevcutQueryler + "&" + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i);
                    }
                }
    
                // Burada yeni eklenecek QueryStringleri ekliyoruz
                if (eklendiMi == false)
                    mevcutQueryler += queryIsmi + "=" + queryDegeri;
    
                return mevcutQueryler;
            }

    6 Kasım 2013 Çarşamba 14:37

Tüm Yanıtlar

  • Benzer bir soru burada sorulmuş

    QueryString'ten de değeri almak için SubString metodunu kullanabilirsin. 

     
    6 Kasım 2013 Çarşamba 10:06
    Moderatör
  • Ben olsam List<int> değerde saklar bunu serialize edip Base64 ile querystring içinde taşırdım. Gerçi viewstate içinde taşımak varken neden qs içinde taşıdığınızı tam anlayamadım... neyse;

    test.aspx?marka=f523Ac763eAQeee54a654=

    şeklinde olur queryniz. içinde istediğiniz kadar int taşırsınız.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    6 Kasım 2013 Çarşamba 11:54
    Moderatör
  • Teşekkürler arkadaşlar bilgiler için.

    Şu şekilde bir çözüm üretebildim. İşime yarıyor ihtiyacı olan arkadaşlar için;

            public static string QueryStringEkle(string queryIsmi, string queryDegeri)
            {
                string mevcutQueryler = "?";
                bool eklendiMi = false;
                bool mevcutMu = false;
                NameValueCollection olanQueryler = new NameValueCollection();
                olanQueryler = HttpContext.Current.Request.QueryString;
    
                for (int i = 0; i < olanQueryler.Count; i++)
                {
                    if (olanQueryler.GetKey(i) == queryIsmi)
                    {
                        foreach (var deger in olanQueryler.Get(i).Split(',').ToList())
                        {
                            if (deger == queryDegeri)
                            {
                                mevcutMu = true;
                                break;
                            }
                        }
    
                        eklendiMi = true;
                        if (mevcutMu == false)
                            mevcutQueryler = mevcutQueryler + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i) + "," + queryDegeri;
                        else
                            mevcutQueryler = mevcutQueryler + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i);
                    }
                    else
                    {
                        // Burada var olan tum QueryStringleri degiskene aktariyoruz
                        if (mevcutQueryler == "?")
                            mevcutQueryler = mevcutQueryler + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i) + "&";
                        else
                            mevcutQueryler = mevcutQueryler + "&" + olanQueryler.GetKey(i) + "=" + olanQueryler.Get(i);
                    }
                }
    
                // Burada yeni eklenecek QueryStringleri ekliyoruz
                if (eklendiMi == false)
                    mevcutQueryler += queryIsmi + "=" + queryDegeri;
    
                return mevcutQueryler;
            }

    6 Kasım 2013 Çarşamba 14:37