SelamünAleyküm bu yazı ile Controller konusunu bitirmiş olacağız bu yazıda Using kullanımı ve Action dönüş tiperine dair bilgi sahibi olacaksınız.
Not: | İleride yapacağımız örneklerde sık sık using kullanımı yapacağımızdan ötürü her kodda tek tek using kullanımını göstermek yerine örneklerimize başlamadan kullanmayı göstermeyi tercih ettik. |
Oluşturulan Controller'de üst tarafta bulunan using'leri silelim.
Görüldüğü gibi Controller'in içi hata verecektir. Kırmızı ile hata veren alanlardan birine imleç ile sağtık yapalım. (Ctrl + . tuşları ile de yapabilirsiniz.) yukarıya eklemek istediğimiz kütüphanenin yolunu (namespace) using ile ekleyelim. Böylece her seferinde kullanmak istediğimiz ifadenin yolunu başına yazmamız gerekmez.
Not: | Daha sonraki konularda tekrar using taraflı kullanımını gösterme yapılmayacak olup sizin eklediğiniz varsayılacak. |
Controller içinde yer alan bazı Action metodlarının dönüş tiplerini inceleyelim:
Not: |
Dönüş tipi olarak IActionResult olarak kullandığımız dönüş tipi olarak yazının devamında göreceğimiz diğer dönüş tiplerin birçoğunu IActionResult ile döndürebiliriz. IActionResult kullanmamızın amacı, dönüş tipimizin belli olmaığı durumlarda IActionResult döndürerek aldığımız parametreye göre, veri tabanından dönen sonuçlara vb. koşullara bağlı olarak istediğimiz dönüş tipini kallunabilmek. IActionResult genel bir interface'dir. IActionResult dönüş tipi, kodlama yaparken kolaylaık sağlayacaktır. |
public IActionResult Index()
{
var resultType = false;
if (resultType)
retrun View();
else
return NotFound();
}
Bu koddan anlaşılacağı üzere eğer resultType değişkenimiz false ise NotFound döndürür, eğer true ise Index View'ini döndürür. Biz burada ViewResult ya da NotFoundResult dönüş tipini kullansaydık kodumuz, "NotFoundResult ViewResult tipine dönüştürülemez" gibi bir hata verecekti.
Int tipinde bir sayı döndürebiliriz. Tarayıcı ekranına döndürdüğümüz sayıyı yazar.
public int Index()
{
return 5;
}
String tipindeherhangi bir metin dödürebiliriz. Tarayıcı ekranına döndürdüğümüz metni yazacaktır.
publid string Index()
{
return "Herşey \"Bismillah\" ile başlar.";
}
Action metoduna ait View dosyasını döndürecektir. Tarayıcı ekranına Vİew dosyamızdaki Html'i yazar.
public ViewResult Index()
{
return View();
}
StatusCodeResult 404, 403, 500 vb. gibi sonuçları döndürür. Ekrana dödürdüğünüz Status kodunuz ne anlama geliyorsa o durumu yazacaktır.
public StatusCodeResult Index()
{
return StatusCode(403);
}
403 durum kodu, bu sayfaya erişim yetkiniz bulunmuyor hatası verir.
İsteğin başarılı olduğuna dair dönüş tipidir. Çalıştırdığımızda ekrana boş bir sayfa basacaktır. İsteğin başarılı olduğunu anlatan 200 durum kodunu dönecektir.
public OkResult Index()
{
return Ok();
}
Sayfanın bulunamadağına dair dönüş tipidir. Çalıştırdığımızda ekrana sayfa bulunamıyor yazacaktır. 404 durum kodunu döner.
public NotFoundResult Index()
{
return NotFound();
}
Bir içeriğin olmadığını gösteren 204 durum kodunu dödürür. Çalıştırdığımızda boş bir ekran gelecektir.
public NoContentResult Index()
{
return NoContent();
}
Sayfaya gelen istek için kimlik doğruması gerektiği dönüş tipidir. Sayfaya girişinde yetkisinin olmadığını gösterir. 401 durum kodunu döner.
public Unauthorizedresult Index()
{
return Unauthorized();
}
Siteyi Hacklemek veya başka art niyetli biri siteye girişyapıldığında dönen dönüş tipidir. Url veya isteğin yapısının hatalı olduğu durumlarda kullanılır. 400 durum kodunu döner.
public BadRequestResult Index()
{
return BadRequest();
}
Bu dönüş tipiyle dosyanızı okuyup tarayıcı ekranına yasıtabiliriz.
public FileResult Index()
{
var file = System.IO.File.ReadAllBytes(@"C:\Test\Test.txt");
// Gönderilen ilk parametre dosyanın yoludur, ikinci parametre dosyanın içerik tipidir. Yani C
// diskinde bulunan Test klasörünün içindeki Test.txt dosyasının içindeki metin ekrana
// yazılacaktır.
return File(file, "text/plain");
}
Json formatında sonuç döndürür.
public JsonResult Index()
{
return Json(new { Name = "Hasan", Surname = "BOZKUŞ" });
}
Bir içerik döndürmemiz içindir. Döndürmek istediğimiz içerik, içerik tipine göre şekillenir.
public ContentResult Index()
{
// İlk parametredöndürmek istediğimiz içerik, ikinci parametre içeriğin tipi.
return ("{ \"Name\": \"Hasan\", \"Surname\": \"BOZKUŞ\" }", "application/json");
}
Örneğimizde görüleceği üzere ilk parametre ile string bir ifade yer alıyor, diğer paramatremizde ise içeriğin tipini belirliyoruz. Ekran çıktısı olarak json içerik tipi olarak döndürmesini istediğimizden json formatta veri döndürmesini sağlıyoruz.
Partial View'ler, View Katmanının bir parçasıdır. (View konusuna geldiğimizde inşallah daha detaylı inceleyeceğiz.) Bu Partial View'leri, Action metodlarımızda geri döndürebiliriz.
İlk olarak bir Partial View dısyası açalım. Solution Explorer sekmesinden Views klasörüne sağ tıklıyoruz orada Add kısmında bulunan New Folder seçeneğini seçtikten sonra eklenen klasöre Shared adını veriyoruz. Daha sonra oluşturmuş olduğumuz Shared klasörüne sağ tıklayıp Add kısmına gelip View seçeneğini seçelim.
Karşımıza çıkacak ekranda, alt tarafta kalan seçeneklerden sadece "Create as a Partial View" seçeneği işaretli olmalıdır. Ve oluşturacağımız Partial View'e herhangi bir isim veriyoruz. Add butonuna tıklayıp .cshtml uzantılı Partial View dosyamızı oluşturuyoruz.
Partial View dosyamızı açalım ve içine bir şeyler yazalım.
<!DOCTYPE html>
<html>
<body>
<a href="#">SelamünAleküm burası Örnek_kısmi_görünüm adlı Partial View'dir.</a>
</body>
</html>
Şimdi ise bu Partial View dosyamızı Action metodumuzdan çağıralım. Ekrana Örnek_kısmi_görünüm View'ini basacaktır.
public PartialViewResult Index()
{
return PartialView("Örnek_kısmi_görünüm");
}
Uygulamamızın başka sayfasına veya başka bir web sitesine 302 yönlendirmesi yapmak için kullanırız. Gitmek istediğiniz sayfanın bağlantı adresini string olarak girmeniz yeterli olur.
public RedirectResult Index()
{
return Redirect("https://www.google.com.tr/");
}
Kodumuzu çalıştırdığımızda Google' ın resmi web adresine 302 yönelndirmesi yapar.
public RedirectResult Index()
{
return Redirect("https://www.microsoft.com/tr-tr");
}
Kodumuzu bu şekilde revize edersek Microsoft'un resmi web adresine 301 yönlendirmesi yapar.
Uygulamanızdaki bir Action metoduna 302 yönlendirmesi yapmak için kullanılır.
public RedirectToActionResılt Index()
{
// İlk parametre Action Adı, İkinci parametre Controller adı, Üçüncü parametre göndermek
// istediğiniz parametreler.
return RedirectToAction("Page", "Home", new { name = "Ali" });
}
public IActionResult Page()
{
if (name == "Veli")
return Content(" SelamünAleyküm Veli");
else
return NotFound();
}
Görüleceği üzere Index metodumuza RedirectToAction ile HomeController içindeki Page metoduna yönlendirme yaptık ve name parametresine de "Ali" değerini atadık. Page Action metodunda name parametresi if ifadesinde "Veli" metnine eşit olmadığı için NotFound() dönecektir.
Aynı Controller içinde bulunan Action metodlarında Controller adını yazmadan da yönlendirme yapılabilir.
public RedirectToActionResılt Index()
{
// İlk parametre Action Adı, İkinci göndermek istediğiniz parametreler.
return RedirectToAction("Page", new { name = "Ali" });
}
public IActionResult Index()
{
if (name == "Veli")
return Content(" SelamünAleyküm Veli");
else
return Content(" SelamünAleyküm " + name);
}
Ekrana " SelamünAleyküm Ali" yazacaktır.
Not: | Eskiden var olup sonradan linki değişmiş sayfalarınızı SEO için yeni oluşturmuş olduğunuzsayfalara yönlendirmeyi unutmayın. |
Kendimizin oluşturmuş olduğunuz bir modeli de Action metodlarımızla dödürebilirz.
İlk olarak projemize bir klasör oluşturalım, Solution Explorer sekmesinden projemize sağ tıklayalım Add kısmından New Folder seçeneğini seçip adını Models olarak veriyoruz. Oluşturmuş olduğumuz Models klasörüne sağ tıklıyoruz, Add kısmından Class seçeneğini seçiyoruz. Class dosyamıza Kişi adını veriyoruz ve sonrasında Add butonuna basıyoruz.
Kişi adlı Class dosyamızn içini açıp Property tanımlamalarını yapalım.
public class Kişi
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
}
Kişi adlı sınıfımıza Id, Name ve Surname olarak üç özellik tanımladık. Şimdi de Action öetodumuzda bu özelliklere değer atamalarını yapıp ekrande gösterelim.
public Kişi Index()
{
var person = new Kişi();
person.Id = 123;
person.Name = "Hasan";
person.Surname = "BOZKUŞ";
return person;
}
Çalıştırdığımızda Kişi adlı modelimizi, ekrana json formatında yazacaktır.
Şimdilik bu kadar Sonraki konumuz ise View olacaktır inşallah ilgilenenlerin faydalanması ümidiyle.
Blog Listesi