mehmetduran.com - Paylaşmak Güzeldir...
Asp.net MVC ile İlgili Birkaç Bilgi
Bu yazımda uzun süredir değinemedim MVC hakkında birkaç faydalı bilgiyi paylaşacağım. Aslında bloğumda MVC üzerine yazı yazamasam da MVC ile ilgili oldukça önemli çalışmalar yapmaktayım. Bu çalışmalar sonucu edindiğim birçok bilgi var. Bu yazımda bu bilgilerden birkaçına değinmeye çalışacağım. Bunlardan ilki MVC projelerinde Controller bölümünde tanımlı olmayan bir Action'a istek yapıldığında bu istekleri yakalama işlemini nasıl yapacağımızı göstermeye çalışacağım. Diğeri de kod bölümünde html linkler oluştururken oluşturulacak link adreslerinin tanımlanan Route'lara göre nasıl olacağı. Şimdi bu işlemleri nasıl yapacağımıza bakalım.

Öncelikle MVC projelerinde Controller'da tanımlanmayan bir Action'a istek yapıldığında bu istekleri yakalama ve işlem yapmaya göz atalım. Aslında burada hiçbir kontrol yapmazsak sistem hata üretecektir. Ancak hata üretmek yerine kullanıcıya bilgi verme amaçlı ve hataları izleme, kontrol etme amaçlı olarak bu istekleri yakalayabiliriz. Bunun için MVC projelerinde tanımladığımız Controller sınıflarında aşağıdaki gibi bir kod bloğu (method override) yazabiliriz.

    protected override void HandleUnknownAction(string actionName)
    {
      // Tanımlı olmayan bir istek geldiğinde "TanimsizIstek.aspx" sayfası devreye
      // girer ve hata oluşmaz. Ancak isteyenler burada hata loglaması yapalabilir.
      this.View("TanimsizIstek").ExecuteResult(this.ControllerContext);
    }

Diğer bir konu ise MVC projelerinde kodlama yaparken html verileri kod ile üretmek durumunda kalabiliriz. Bu durumlarda üretilecek html verideki metinlerden ziyade adresler (linkler) önemlidir. Bu durumlarda linkleri statik bir şekilde yazmak iyi olmayacaktır. Bunun için MVC içinde tanımlı olan Helper metotlarını kullanmalıyız. Bu metotlar ile linkler tanımlı olan Route'lara (Global.asax içinde tanımlanan Route yapısı veya özel olarak tanımlanan Route yapısı) göre üretilecek sistemde link kırılmaları oluşmayacaktır. Bunun için örnek bir kodlamayı aşağıdaki gibi yapabiliriz.

    public static string Link(string parametre1, int parametre2)
    {
      UrlHelper uh = new UrlHelper(new System.Web.Routing.RequestContext(
        new HttpContextWrapper(HttpContext.Current), new System.Web.Routing.RouteData()));
      string link = uh.Action("Haber", "Site", new { baslik = parametre1, Id = parametre2 });
      string sonuc = string.Format("<a href=\"{0}\">{1}</a>", link, parametre1);
      // sonuç olarak href değeri Routes tanımlamalarına uygun olarak verilir
      // Routes değişikliğinde buradaki değerlerde bir değişikliğe gerek olmadan
      // yeni yapıya uygun adresler elde edilecektir.
      return sonuc;
    }

Buradaki gibi bir kodlama ile Route yapılarında değişiklik yapsak bile üretilen linklerde bir sorun olmayacak ve tanımlı olan Route bilgilerine göre linkler üretilecektir. Böylece link kırılmaları yaşanmayacak ve URL yapıları değişken hale gelebilecek ve tıpkı Wordpress sistemlerindeki gibi esnek URL yapıları kullanılabilecektir. Örnek verecek olursak kendi bloğumda son dönemde URL yapısı ile birçok kez oynadım. Kullandığım uzantıları değiştirdim, Route tanımlamaları yaptım.

İlgilenenler için faydalı olacağını düşünüyorum.

İyi çalışmalar.
Mehmet Duran 09 Temmuz Cuma 2010 4 32863 4,1
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Asp.net MVC'de ActionResult Türleri Asp.net MVC (Model View Controller) - Giriş 411 Length Required Hatası ve Çözümü Asp.net MVC'de Özel ActionResult Oluşturma Dinamik Meta Tag Oluşturma
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Ali SARAÇ 12 Temmuz Pazartesi 2010 11:19 #1
Sevgili Mehmet asp.net de jquery ile hazır tool kullanmadan (mvc için paylaşmış olduğun örnekteki gibi) nasıl yapabiliriz.Teşekkrüler paylaşımların için.
Ali Yılmaz 12 Temmuz Pazartesi 2010 13:34 #2
(generic handler için)Ancak bu yöntem çok daha kullanışlı ve çok faydalı işlemler yapabiliriz. Mesela Ajax ile dosya upload etmek için bu yöntem kullanılabilir.(senden alıntı). HttpPostedFile file = context.Request.Files["fileInput"]; null değer geliyor. input id="fileInput" type="file" burdan değeri nasıl alabilirim.Yardımların için teşekkürler arkadaşım.
Mehmet Duran 12 Temmuz Pazartesi 2010 21:14 #3
Merhaba Ali. Sorduğun konuyu kavrayamadım. Neyi hazır tool olmadan yapmak istiyorsun?
Mehmet Duran 12 Temmuz Pazartesi 2010 21:16 #4
Merhaba. Burada formları jQuery Ajax ile sunucuya ilettiğimizde maalesef file türündeki input'ların değerleri sunucuya gitmiyor (şimdilik). Zamanında o şekilde düşünüp olabileceğini düşünmüştüm ama maalesef şimdilik mümkün değil. Ancak tam olarak böyle olmasa da Ajax ile Fileupload örnekleri ve script kütüphaneleri mevcut. O kütüphaneleri kullanarak aynı şekilde işlem yapabilirsin.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Bazı yıkılışlar daha parlak kalkınışların teşvikçisidir.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009