ASP.NET Core MVC Giriş

ASP.Net Core Mvc platformu bağımsız bir şekilde geliştirilebilir, test edilebilir ve kolay bir şekilde tüm bakım ihtiyaçları yapılabilir Web uygulamaları geliştirmeye yarayan Microsoft'un son geliştiridiği teknlojidir.Bu platform bir çok yeniliklerle hayatımıza girmiştir.ASP.NET dünyasından geçiş yapan yazılımcılar için getirdiği bir çok yenilik bulunmaktadır.Bunlardan biri ve en önemlisi Web Projelerinin IIS ihtiyacının ortadan kalkmasıdır.Yine bu platform ile birlikte gelen bir diğer özellik ise Dependency Injection desteği.Dependency Injection ile uygulama içerisindeki bağımlılıkların birbirinden tamamen izole edebilir ve test ve bakım maliyetlerinin oldukça aşağıya çekebilirsiniz.

ASP.NET Core MVC'de göze çarpan diğer özellikler ise Routing,Model Validation,Model Binding,Dependency Injection,Filters,Areas,Web APIs,Strongly Typed Views,Tag Helpers ve View Components olarak sıralayabiliriz.Bu özelliklerin çoğu .Net Framework'ü üzerinden MVC projeleri geliştirmiş bir çok yazılımcının bilgi sahibi olduğu özelliklerdir.Bu özelliklere sırasıyla kısaca bir göz atalım.

Routing (Rota İşlemleri)
ASP.NET Core MVC'deki yönlendirme işlemleri projeye kurulu bir şekilde gelmektedir.Kurulu gelen yapıyı iki farklı şekilde düzenlememiz,güncellememiz

1.    Convention-Based Routing (Geleneksel Rotalama) : .Net Framework'ü ile MVC projelerinde geliştirildiği şekilde yapılır Routes nesnesi içerisinde bulunan Map Route fonksiyonundan yararlanarak uygulama genelindeki rota yönetimini sağlayabilirsiniz.Aşağıda görüldüğü şekilde kullanılabilir.

routes.MapRoute(name: "Default", template: "{controller=Home}/{action=Index}/{id?}");

2.       Attribute Routing (Attribute Kullanarak Rotalama) : Controller sınıfı ve Action Methodu üzerindeki satıra iligi attributeler yazılır.Aşağıda görüldüğü şekilde kullanılabilir.

[Route("api/personel")]
public class PersonelController : Controller
{
          [HttpGet("{personelId}")]
          public IActionResult GetPersonel(int personelId)
          {
          //Kod Alanaı
          }
}


Model Validation (Model Doğrulama)

Kullanılan model nesnelerinin property bazında hem istemci hem de sunucu tarafında doğrulama işlemlerinin yapılması için model doğrulama amaçlı attribute tipleri .NET Framework’te olduğu gibi .NET Core’da da bulunuyor. Model validasyonu işlemlerinin gerçekleştirilebilmesi için öncelikle model sınıfına ilgili attribute’lerin eklenmesi gereklidir.

using System.ComponentModel.DataAnnotations;

public class PersonelViewModel

{

    [Required]

    [Adi]

    public string Adi { get; set; }

    [Required]

    [Soyadi]

    public string Soyadi { get; set; }

}

Burada eklenilen attribute’ler sayesinde PersoneViewModel modelinin hem istemci hem de sunucu tarafındaki validasyonu otomatik olarak yapılır.Web tarafında ModelState.IsValid methodu kullanıldığında otomatik olarak doğrulamayı gerçekleştirecektir.

Dependency Injection
Bu özellik ASP.NET Core MVC içerisine gömülü olarak gelmektedir.Inject işlemi dör farklı şekilde gerçekleştirilebilir.Singleton,Scoped,Transient ve Instance olarak dört farklı modda gerçekleştirilebilir.

İlk olarak kullanılacak servislerin Startup.cs içerisinde bulunan ConfigureServices() metoduna tanımlanması gerekir.Personel Servisi üzerinden devam edelim.

public void ConfigureServices(IServiceCollection services)
{
   services.AddMvc();
   services.AddSingleton<IPersonelService,PersonelService>();
}

Şu an IPersonelService bağımlılığını uygulamaya tanıtmış olduk.Sırada Inject edilme işlemi var.

Hangi Controller sınıfında çalışıyorsak o sınıfın Contsructor içerisine ilgili gerekli olan bağımlılığın eklenmesi gerekir.

public class PersonelController : Controller
{
   private IPersonelService _personelService;
   public MusteriController(IPersonelService personelService)
   {
      _personelService = personelService;
   }
}

Bu işlemin ardından _personelService içerisinde bulunan tüm methodları kullanılabilir duruma getirmiş oluyoruz.

Strongly Typed View
ASP.NET Core MVC, daha önceden .Net MVC platformunda olduğu gibi Model ile View arasında güçlü bir bağlantı kurulmasına olanak sağlar.Bu özellikler sayesinde Listeleme,Ekleme,Güncelleme,Silme gibi Database işlemleri çok kolay bir şekilde gerçekleştirilebilir.

   public IActionResult PersonelListeleme ()
   {
      var personelData = _personelService.GetList();
      return View(personelData);
   }

Daha önce tanımlamış olduğumuz _personelService kullanarak Personel tablosu içerisindeki dataları View’a model olarak gönderiyoruz.

@model List<Personel>
<ul>
    @foreach (var p in Model)
    {
        <li>@p.Adi @p.Soyadi</li>
    }
</ul>

Yukarıdaki şekilde ise dataları ekrana yazdırıyoruz.

Tag Helpers
Tag Helpers,sunucu tarafında HTML elementlerinin oluşturulması ve render edilebilmesi için gerekli olan yardımı bize sağlar.ASP.NET Core MVC ile birlikte bir çok Tag Helpers gömülü olarak gelir.Bunlar bize bir çok alanda fayda sağlar.Formların oluşturulması dosyaların yüklenmesi gibi.Tag Helpersların Viewlarda kullanılabilmesi için Import edilmesi gerekir.

@addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers

Şimdi ufak bir form örneği yazalım.

<form asp-action="Insert" asp-controller="Personel"method="post" enctype="multipart/form-data">
        <div class="form-group">
            <label asp-for="Ad"></label>
            <span asp-validation-for="Adi" class="text-danger"></span>
            <input asp-for="Adi" type="text" class="form-control" />
        </div>
        <div class="form-group">
            <label asp-for="Soyadi"></label>
            <span asp-validation-for="Soyadi" class="text-danger"></span>
            <input asp-for="Soyadi" type="text" class="form-control" />
        </div>
        <button type="submit" class="btn btn-info btn-sm">Save</button>
    </form>

Bu şekilde formumuzu PersonelController içerisinde yer alan Insert View’ına Post etmiş oluruz.
Yukarıda bulunan bir çok özelliğin üstünden kısaca geçmiş bulunuyoruz.Bunların detaylı örnekleri farklı makalelerde paylaşmaya devam edeceğim.

Bir sonraki makelede görüşmek üzere...

İlginizi Çekebilir

Yorum Yap