SORU
8 Aralık 2008, PAZARTESİ


Nasıl isteğiniz test edersin.[] Sorgu dizesi değişkenleri?

Ben sık sık Request.QueryString[] değişkenler kullanmak.

Page_load ben genellikle yapmak gibi şeyler:

       int id = -1;

        if (Request.QueryString["id"] != null) {
            try
            {
                id = int.Parse(Request.QueryString["id"]);
            }
            catch
            {
                // deal with it
            }
        }

        DoSomethingSpectacularNow(id);

Biraz hantal ve saçma görünüyor. Nasıl Request.QueryString[]ler ile anlaşma mı?

CEVAP
8 Aralık 2008, PAZARTESİ


Aşağıda böyle bir kodu yazmak için izin veren bir uzantısı yöntemi:

int id = request.QueryString.GetValue<int>("id");
DateTime date = request.QueryString.GetValue<DateTime>("date");

TypeDescriptor kullanımı dönüştürme işlemi yapar. İhtiyaçlarınıza göre, bir özel durum üretiliyor yerine varsayılan bir değer olan aşırı ekleyebilirsiniz:

public static T GetValue<T>(this NameValueCollection collection, string key)
{
    if(collection == null)
    {
        throw new ArgumentNullException("collection");
    }

    var value = collection[key];

    if(value == null)
    {
        throw new ArgumentOutOfRangeException("key");
    }

    var converter = TypeDescriptor.GetConverter(typeof(T));

    if(!converter.CanConvertFrom(typeof(string)))
    {
        throw new ArgumentException(String.Format("Cannot convert '{0}' to {1}", value, typeof(T)));
    }

    return (T) converter.ConvertFrom(value);
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • ShayLoss

    ShayLoss

    5 Kasım 2009