Bu yazımda MVC'de özel bir ActionResult tanımlamayı ve kullanmayı göstermeye çalışacağım. ActionResult'lar Action metotların dönderebileceği sonuçlardır ve MVC ile oluşturduğumuz projede tüm işlemleri gerçekleştiren bölüm Action bölümüdür. Bu yüzden MVC ile uğraşırken en çok zaman vereceğimiz bölüm Action metotlar olabilir. Bu bölümü kolaylaştırmak ve esneklik kazandırmak için özel olarak ActionResult türleri tanımlayabilir ve kullanabiliriz. Buradaki yazımda MVC ile gelen standart sonuç türlerini belirtmiştim. Şimdi ise ihtiyaçlarımıza göre özel olarak sonuç türü oluşturup kullanmaya bakalım.
İşimizi kolaylaştırması için bu yöntemi çok kez kullanabiliriz. Örnek verecek olursak, Sitemap sonucu üreten bir sonuç türü (örnek kodları vereceğim), RSS sonucu üreten bir sonuç türü, UserControl veya başka bir kontrolü render eden bir sonuç türü yazıp kullanmak projelerimizi daha anlaşılır, daha kolay bir hale getirir.
Şimdi vereceğim örnekte bloğumda da kullandığım ve burada paylaştığım Sitemap sınıfını kullanarak Sitemap sonucu üreten bir sonuç türü oluşturup bunu kullanacağız.
Öncelikle türü oluşturmak için yazacağımız kodlara bakalım.
 
// Yazacağımız özel Sonuç Class'ı
public class SitemapResult : ActionResult
{
  private List<SitemapItem> Veriler { get; set; }
  private string ContentType { get; set; }
 
  public SitemapResult(List<SitemapItem> veriler)
  {
    this.Veriler = veriler;     
  }
 
  public SitemapResult(List<SitemapItem> veriler, string ContentType)
  {
    this.Veriler = veriler;
    this.ContentType = ContentType;
  }
 
  public override void ExecuteResult(ControllerContext context)
  {
    Sitemap sitemap = new Sitemap(Veriler);
    context.HttpContext.Response.ContentType = (ContentType == null) ? ("text/xml") : (ContentType);
    context.HttpContext.Response.Write(sitemap.SitemapSonuc());
  }
}
 
Görüldüğü gibi ActionResult sınıfını inherit eden (kalıtım olayı) bir sınıf oluşturuyoruz. Yazdığımız sınıfın Result olabilmesi için örnekte verdiğim gibi ActionResult sınıfını veya buradaki yazımda belirttiğim ActionResult türleri olan sınıflardan birini inherit etmeli. Kalıtım olayından sonra ise bu sonucu çalıştıracak olan ExecuteResult metodunu overload etmeli ve kendi ihtiyaçlarımıza göre sonucu oluşturmalıyız.
Yazmış olduğumuz bu sonuç türünü ise aşağıdaki gibi kullanabiliyoruz.
 
// Yazdığımız özel Sonuç türünden Bir Action Metot
public ActionResult SiteMap()
{
  List<SitemapItem> veriler = new List<SitemapItem>()
  {
    new SitemapItem(){ loc = "http://mehmetduran.com", lastmod = DateTime.Now, changefreq = "daily", priority = "1" }
  };
  return new SitemapResult(veriler);
}
 
// Bir başka kullanımı
public SitemapResult SiteMap()
{
  List<SitemapItem> veriler = new List<SitemapItem>()
  {
    new SitemapItem(){ loc = "http://mehmetduran.com", lastmod = DateTime.Now, changefreq = "daily", priority = "1" }
  };
  return new SitemapResult(veriler, "text/xml");
}
 
İşlerimizi daha kolay daha anlaşılır yapmak için bu şekilde sonuçlar oluşturmalı ve kullanmalıyız.
İyi Çalışmalar.
Mehmet Duran 04 Eylül Cuma 2009 4 15149 5,0
Asp.net MVC Action MVC Controller Inheritance Kalıtım Metot Class Sitemap Generic Class
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar jQuery Ajax ile Arama Merkezi (Uygulamam) Asp.net Uygulamalarında Namespace ve Class Kullanımı Asp.net MVC (Model View Controller) - Giriş Asp.net MVC Areas (Birden Fazla Proje Kullanarak) C Sharp'ta Split Metodu Kullanımı
Yorumlar
Yorum Yaz
RSS Yorum Takibi
zülküf küçüközer 05 Eylül Cumartesi 2009 23:09 #1
Bu yöntem site haritası dışında PDF , dosya gibi özel istekler için de kullanılmasının uygun olduğunu düşünüyorum. Aklıma ilk gelen JSON result idi fakat bunu zaten düşünmüşler. :)
Mehmet Duran 06 Eylül Pazar 2009 00:43 #2
Standart olarak gelen türlerde tüm işlemler gerçekleştirilir diye düşünüyorum. Ancak bazı işlemler zahmetli olabilir. Ancak yazacağımız özel türler ile bunu yapabiliriz. Hem dosya için hem de Json için standart olan sonuçlar var. Ancak ihtiyaca göre bunları yeniden gözden geçirebiliriz.
mustafa genco 04 Nisan Pazartesi 2011 00:02 #3
bu nedir kodlardan başka ne yazılmış? hiç...
Mehmet Duran 08 Nisan Cuma 2011 22:57 #4
@mustafa, ne bekliyordun acaba?
İ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.
Gençken bilgi ağacını dikmesek, yaşlandığımız zaman gölgesine sığınacak bir yerimiz olmayacaktır.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Kategoriler
Asp.net (136) C Sharp (73) Veritabanı (61) Asp.net MVC (40) jQuery (109) Javascript (91) Web Tasarım (67) Güncel (135) Diğer (137) Programlar (19) E-Book (32) Ajax (58) Flash (3) Asp (8)
Etiketler
Access Benden Blog Class Css Donanım Editör Fotoğraf Futbol Google Güvenlik Hayat Hosting IP İndir İnternet Jquery Linq List Microsoft MVC MySql Okul Özel Günler Programlama Proje Resim Rss SEO Silverlight Site Araçları Sitemap Sql Sql Server Staj Takvim Tanıtım Tarih Tasarım-Görsellik Teknoloji Tema UML URL User Control Visual Studio XML XNA Yazılım
Rastgele Yazılar
C Sharp 3.0 in a Nutshell (E-Book) Takvim Uygulaması Kullanımda 2008'in Değerlendirmesi 2009'un Hedefleri 2009'u Geride Bırakırken.... Asp.net ile Resim Üzerine Çoklu Yazı Yazma (Gener .. Asp.net ile Dinamik Sitemap Hazırlama Vesikalık Fotoğraflarınızı Eskiye Benzetin MVC ile Link İşlemleri (Html.ActionLink, Url.Acti ..
Son Yorumlanan Yazılar
Jquery'de Tanımlayıcı Değiştirme mehmetduran.com 3 Yaşında C# ile Insertion Sort Algoritması C# ile Merge Sort Algoritması C# ile Quick Sort Algoritması Jquery ve Ajax ile Kullanıcı Kontrollerini Kullan .. Javascript ile Mouse Pozisyonunu Bulma Javascript ile Asp.net'te Kendi Validation'larımı ..
Çok Okunan Yazılar
'Mehmet' İsminin Anlamı Nedir? Asp.net ile Dinamik Site Yapımı (Örnek Uygulama) Flash Banner Reklam Yapma Programı İnner Join ile Tabloları Bağlama Emu 8086'da Hazırladığım Assembly Örnekler Jquery ile Haber Manşet Alan Yapımı (Manşet Uygul .. Asp ile FCK Editör Kullanımı Fck Editör Kullanımı
Son Eklenen Yazılar
Askerliğin Ardından O Şimdi Asker Kara Suratlı Bir Garip - Neşet Ertaş mehmetduran.com 4 Yaşında mehmetduran.com 3 Yaşında Citroen C3 Picasso Sahibiyiz Hayatımdaki Gelişmeler Asp.net MVC ile İlgili Birkaç Bilgi
Arşiv
Nisan 2015 (1) Mayıs 2014 (1) Eylül 2012 (1) Nisan 2012 (1) Nisan 2011 (1) Ağustos 2010 (1) Temmuz 2010 (3) Haziran 2010 (4) Mayıs 2010 (2) Nisan 2010 (4) Mart 2010 (2) Şubat 2010 (3)
Takvim
Site İçi Arama
Geliştirdiğim Uygulamalar - Linkler
Jquery ve Ajax ile Geliştirdiğim Uygulamalar Jquery ve Ajax ile Geliştirdiğim Fotoğraf Galerisi jQuery Ajax ile (Google) Arama Merkezi Google Pagerank ve Backlink Sorgulama
Sayfalar
İş Fırsatı, Teklifi Türk Atasözleri - Tanıtım Asp.net MVC Yazılarımın Listesi jQuery ile Yaptığım Örneklerin, Uygulamaların Lis .. Reklam Verme - Yayınlama Tavsiye Linkler - Takip Ettiklerim Bloğumun Öyküsü