Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Uri
Tüm Başlıklar XML

1.  Uniform Resource Identifier.

Web üzerinden erişebileceğiniz herhangi bir şeyin adresi. Bunun bir türü URL'dir.
fizikci
21 Haziran 2005 17:20
2.  Elimizdeki bir Uri hangi parçalardan oluşuyor? Nasıl parse edebiliriz, scheme, host, query string gibi kısımlarını nasıl öğrenebiliriz? Bunun için .Net'de UriBuilder adında bir class var. Bu class oldukça kullanışlı ancak query string'i oluşturan değerleri ayrı ayrı öğrenmemize ve değiştirmemize izin vermiyor. İnternet'te bunu yapan bir kod var mıdır diye araştırdım bulamadım. Kendim yazmak durumunda kaldım. Buraya da aktarayım dedim ki benim gibi bunu arayan biri eli boş dönmesin hesabı.

public class UriParser : UriBuilder
{
    public UriParser(string url) : base(url)
    {
        this.queryPart = new QueryParts(this.Query, this);
    }

    public new string Query
    {
        get { return base.Query; }
        set { base.Query = value; queryPart = new QueryParts(value, this); }
    }

    private QueryParts queryPart;
    public QueryParts QueryPart
    {
        get { return queryPart; }
    }

    public class QueryParts
    {
        private Hashtable ht;
        private UriParser parser;

        public QueryParts(string query, UriParser parser)
        {
            this.parser = parser;
            this.ht = new Hashtable();
            if (query.StartsWith("?")) query = query.Substring(1);
            string[] parts = query.Split(new String[] { "&", "&" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string part in parts)
            {
                string[] keyAndValue = part.Split('=');
                ht[keyAndValue[0]] = keyAndValue[1];
            }
        }

        public string this[string key]
        {
            get {
                return (string)ht[key];
            }
            set {
                ht[key] = value;
                string[] newQueryParts = new string[ht.Count];
                int i = 0;
                foreach(string _key in ht.Keys)
                    newQueryParts[i++] = _key + "=" + ht[_key];
                parser.Query = String.Join("&", newQueryParts);
            }
        }
    }
}

Bu class UriBuilder'dan türetildiği için UriBuilder'a ait mevcut fonksiyonelliği kullanabiliyorsunuz. Ayrıca QueryPart indexer'ını kullanarak key value şeklinde query string'e erişip, değiştirebiliyorsunuz.

Örnek kullanım şöyle olabilir:
UriParser uriParser = new UriParser("list.aspx?pageNo=1&orderBy=Ad");
uriParser.QueryPart["pageNo"] = 2;

Bu kod "list.aspx?pageNo=1&orderBy=Ad" adresini "list.aspx?pageNo=2&orderBy=Ad" şeklinde değiştiriyor.
fizikci
19 Ocak 2008 19:32
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
» HTML

© 2005, Bilişim Kulübü. (1109 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen