SORU
6 Mayıs 2009, ÇARŞAMBA


C bir URL sorgu dizesi oluşturmak için nasıl*?

Bir koddan web kaynakları ararken ortak bir görev gerekli tüm parametreleri içeren bir sorgu dizesi inşa ediyor. Elbette hiçbir roket bilimi gibi dikkat, ilk parametre değilse & bir ekleme, vb gibi parametreleri kodlama almanız gereken bazı hoş detaylar var.

Bunu yapmak için kod çok basit, ama biraz sıkıcı

StringBuilder SB = new StringBuilder();
if (NeedsToAddParameter A) 
{ 
  SB.Append("A="); SB.Append(HttpUtility.UrlEncode("TheValueOfA")); 
}

if (NeedsToAddParameter B) 
{
  if (SB.Length>0) SB.Append("&"); 
  SB.Append("B="); SB.Append(HttpUtility.UrlEncode("TheValueOfB")); }
}

Bu daha şık ve okunabilir kılan bir Yardımcı Sınıf var, istediği gibi ortak bir görevdir. MSDN tarama, aşağıdaki soruyu getiriyor bulmak için başarısız oldum -;:

Yukarıda yapmanın en zarif temiz yolu nedir?

CEVAP
9 Aralık 2009, ÇARŞAMBA


System.Web.HttpUtility.ParseQueryString(string.Empty), çağırarak HttpValueCollection yeni yazılabilir bir kopyasını oluşturmak ve sonra da NameValueCollection olarak kullanabilirsiniz. İstediğiniz değerleri ekledikten sonra aşağıdaki gibi toplama bir sorgu dizesi için ToString diyebilirsin

NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);

queryString["key1"] = "value1";
queryString["key2"] = "value2";

return queryString.ToString(); // Returns "key1=value1&key2=value2", all URL-encoded

HttpValueCollection doğrudan bir örneğini oluşturmak olamaz, iç ve. Bir örnek almak ancak, bir kez NameValueCollection diğerleri gibi kullanabilirsiniz. Çalıştığınız gerçek bir nesne olduğundan Olabilirdi yöntemi, URL kodlu bir sorgu dizesi olarak toplama biçimleri HttpValueCollection, geçersiz kılınmış yöntemi HttpValueCollection, Bir arama.

Bu YÜZDEN web benzer bir soruna bir çözüm için arama yaptıktan sonra, bu bulabildiğim en basit çözüm.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013
  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • Xbox

    Xbox

    1 Kasım 2005