ASP.NET Core MVC ile Gelişmiş Form İşlemleri

ASP.NET Core MVC ile Gelişmiş Form İşlemleri

ASPNET Core MVC ile web uygulamalarında form işlemleri oldukça kolay bir şekilde gerçekleştirilebilir Model Binding, en çok kullanılan veri alma yöntemidir ve kullanıcının girdiği değerler, ASPNET Core MVC'nin Model özellikleriyle eşleştirilir Ayrıca, Model Binding kullanırken dikkatli olmak ve güvenlik önlemleri almak önemlidir FormCollection ve QueryString de diğer veri alma yöntemleridir Model Binding'in yanı sıra gönderilen form verilerini doğrulamak ve göndermek için ASPNET Core MVC'de Validation Attributeleri, TempData ve HTTP Post yöntemi kullanılabilir Tüm bu yöntemler kullanılarak form işlemleri optimize edilebilir ve web uygulamaları güçlendirilebilir

ASP.NET Core MVC ile Gelişmiş Form İşlemleri

ASP.NET Core MVC, modern web uygulamaları için tercih edilen bir web uygulama çerçevesidir ve web form işlemleri için çözümler sunar. Bu makale, ASP.NET Core MVC kullanarak gelişmiş form işlemlerinin nasıl gerçekleştirileceği hakkında bilgi vermektedir.

Bir web uygulaması geliştirmenin en önemli adımlarından biri, kullanıcılardan gelen form verilerini işlemektir. ASP.NET Core MVC, bu işlemi kolaylaştırmak için pek çok araç ve yöntem sunmaktadır. Bu makalede, form verilerini almak, kullanıcı girişi doğrulama, form verilerini göndermek ve depolamak için en iyi pratikler hakkında bilgi verilecektir.


Giriş

ASP.NET Core MVC, modern web uygulamaları geliştirmek için son teknoloji araçlar ve özelliklere sahip bir framework'tür. Bu framework, kullanıcıların web sayfalarındaki form alanlarına veri girip gönderme işlemlerinin nasıl gerçekleştirileceğini de içerir.

Form işlemleri, web uygulamalarındaki en temel ve vazgeçilmez özelliklerden biridir. Bir kullanıcının sunduğu verileri doğru şekilde işlemek, uygun bir şekilde saklamak ve ilgili süreçlerde kullanmak, bir web uygulamasının başarısı için son derece önemlidir. ASP.NET Core MVC, bu süreci basitleştirmek ve hatta otomatikleştirmek için bir dizi özellik sunar.

Form işlemlerinin kullanımı, bir web uygulamasının hedef kitlesine göre değişebilir. Bazı uygulamalar, müşteri geri bildirimleri gibi basit formlar içerebilirken, diğerleri, e-ticaret siteleri veya müşteri ilişkileri yönetimi için kullanılan karmaşık formlar içerebilir.

Bu makale, ASP.NET Core MVC kullanarak form işlemlerinin nasıl gerçekleştirileceği hakkında kapsamlı bir açıklama sunacaktır. Model Binding, Validation Attributeleri, TempData, HTTP Post yöntemi ve daha birçok konuyu ele alarak, ASP.NET Core MVC'de form işlemlerinin nasıl optimize edilebileceğini ve güçlendirilebileceğini tartışacağız.


Form Verilerini Alma

ile web uygulamalarında kullanıcıların veri girişleri alınır. ASP.NET Core MVC, form verilerinin alınması için birkaç seçenek sunar. Bunlar; Model Binding, FormCollection ve QueryString'dir.

Model Binding, en çok kullanılan veri alma yöntemidir. Kullanıcının girdiği değerler, ASP.NET Core MVC'nin Model özellikleriyle eşleştirilir. Bu sayede form verilerinin tek tek alınması gerekmez. Model Binding işlemi, güvenlik açıklarını da en aza indirir. Ayrıca modeldeki herhangi bir özelliğin belirli bir değerle sınırlandırılması, Bind attributeleri kullanarak yapılabilir. Kullanıcıların gönderdiği verilerdeki hatalar, ModelState nesnesi kullanılarak kontrol edilir. ModelState nesnesi, sunucu tarafında kullanıcı girişlerinin doğruluğunu takip eder.

FormCollection, Model Binding yönteminin aksine tek tek değişken tanımı yapılması gereken durumlarda kullanılır. FormCollection, formda kullanıcının girdiği verileri toplayan bir sınıftır. FormCollection sınıfı, içerisindeki öğeler verileri tutar ve bu verilere anahtar olarak erişim sağlar. Ancak, bu yöntemde Model Binding'e göre daha az güvenlidir.

QueryString, genellikle sayfalar arasında veri taşımak için kullanılır. QueryString, URL'nin sonuna eklenen parametreleri, bağlantıya tıkladığınızda alınan sayfada gösterir. Bu yöntemde verilerin güvenliği için http üzerinde şifreleme yapılması gereklidir. Ancak, kullanıcı verileri QueryString yoluyla gönderilirse, genellikle bu yöntem bir başka güvenlik açığına neden olabilir.


Model Binding

Model Binding, ASP.NET Core MVC'de kullanılan önemli bir özelliktir. Bu özellik sayesinde, kullanıcının bir formu doldurduğunda gönderilen veriler bir Model sınıfına otomatik olarak bind edilebilir. Model Binding işlemi sırasında, kullanıcının doldurduğu alanların adı, Model sınıfındaki özelliklerle eşleştirilir. Eşleştirme işlemi Form'da belirtilen input alanlarının 'name' özelliğiyle Model sınıfındaki özelliklerin ismiyle yapılır.

Model Binding işlemi, HTTP Get veya Post isteklerinde işlev görür. Model Binding kullanımına başlamak için öncelikle bir Model sınıfı oluşturmak gerekir. Model sınıfı, gönderilecek form verisi ile eşleşecek özellikleri içermelidir. Form verilerinin Model sınıfındaki özelliklere bind edilmesi işlemi, Controller sınıfında yapılır ve burada incoming request verileri ile Model nesnesi arasındaki bağlantı kurulur.

Model Binding işlemi sırasında, belirli özelliklerin bind edilmemesi gibi durumlarla da karşılaşılabilir. Bu durumda 'Bind' Attribute'leri kullanılabilir. Bind Attribute'leri, Model içindeki belirli özellikleri işaretleyerek hangi bind işleminin kullanılacağını belirleyebilir ve özelliklerin bind edilmesini güvence altına alabilir.

Model Binding, ASP.NET Core MVC geliştiricilerinin sıklıkla kullandığı ve büyük ölçüde faydalı bir özelliktir. Ancak, ne kadar güçlü bir özellik olsa da, dikkatli kullanılmadığında güvenlik sorunlarına yol açabileceği de unutulmamalıdır. Bu nedenle, Model Binding işleminde her zaman Validation özelliği gibi güvenlik tedbirlerini de uygulamak önemlidir.


View'dan Model'e Veri Aktarma

ASP.NET Core MVC ile form işlemleri oldukça kolay bir şekilde gerçekleştirilebilir. Kullanıcının girdiği verilerin Model sınıfındaki özelliklere otomatik olarak aktarılması da bu işlemlerden biridir. Bu sayede veri girişi yapmak için gerekli tüm kodlar yazılabilir.

View'dan Model'e veri aktarımı için kullanılan Model Binding, ASP.NET Core MVC'nin sağladığı bir özelliktir. Bu özellik sayesinde, girdi alanlarındaki veriler otomatik olarak Model sınıfındaki özelliklere aktarılır. Model sınıfındaki özelliklerin adları, View'da kullanılan name özelliği ile aynı olmalıdır. Bu sayede otomatik olarak veri aktarımı sağlanır.

Model Binding işleminin belirli özelliklerinin ayarlanmasına yardımcı olan Bind attributeleri de kullanılabilir. Bu attributeler, Model Binding işleminin hangi özelliklerinin aktarılabileceğini belirler. Bu sayede gereksiz özelliklerin aktarımı önlenir ve işlem daha hızlı bir şekilde gerçekleşir.

View'dan Model'e verilerin aktarımı, ASP.NET Core MVC'de yapılan form işlemlerinin en önemli adımlarından biridir. Bu adım başarılı bir şekilde gerçekleştirildiğinde, diğer adımlar da kolay bir şekilde tamamlanabilir.


Bind Attributeleri

Bind attributeleri, Model Binding işleminin belirli özelliklerinin ayarlanmasına yardımcı olan özel özniteliklerdir. Bu öznitelikler MVC'de Model sınıfındaki öznitelikler ile birlikte kullanılabilmektedir. Bind özniteliği, özelliklerin hangi istek türünden alınacağını veya hangi özelliklerin alınacağını belirlemekte kullanılmaktadır.

Bind özniteliği kullanımı örneğine bakacak olursak; eğer kullanıcıdan sadece "ad" ve "soyad" bilgileri isteniyorsa ve bir form içerisinde daha fazla özellik yer alıyorsa Bind özniteliği kullanarak sadece istenilen özelliklerin Model sınıfı içerisinde kaydedilmesi sağlanabilir. Bunun için Model sınıfı özniteliği olarak [Bind("ad, soyad")] kullanılabilir. Bu şekilde sadece "ad" ve "soyad" özellikleri formdan alınır ve diğer özellikler göz ardı edilir.

Bind özniteliğinin kullanımı, Model Binding işlemini daha da güçlü hale getirmekte ve performansı arttırmaktadır. Aynı zamanda, Model Binding işlemi içerisinde yer alan fazla verilerin özelliklerine atanmasından kaynaklı güvenlik sorunlarına da çözüm sunmaktadır.


Form Kullanıcı Girişi

Form kullanıcı girişi yaparken, kullanıcıların hatalarla karşılaşması oldukça yaygındır. Bu hataların çözümü için ModelState nesnesi kullanılabilir. ModelState nesnesi, herhangi bir giriş uygunsuz olduğunda, otomatik olarak hata mesajları üretir.

Bunun yanı sıra, Validation Attributeleri de kullanıcı girişlerinin doğruluğunu kontrol etmek için yardımcı olur. Bu attributeler, kullanıcının girdiği verileri filtreleyebilir ve belirli gereksinimleri kontrol edebilir. Bunlar, dataType, required vb. dahil olmak üzere birçok kadar farklı türde olabilir.

Form kullanıcı girişi, genellikle gönderilen verilerdeki eksik bilgiler veya yanlış biçimlendirme gibi sorunları ortaya çıkarır. Bu sorunları çözmek için ModelState ve Validation Attributeleri gibi yöntemler kullanarak girişleri doğrulamak önemlidir. Bu sayede, kullanıcının daha düzgün bir deneyim elde etmesi sağlanır.


ModelState

Form işlemleri yapıldığı sırada kullanıcının girdiği veriler doğrulanmalıdır. Bu doğrulama işleminde ModelState nesnesi kullanılır. ModelState nesnesi formda girişi yapılan her alan için bir özellik barındırır ve her bir özelliğin doğrulanması ile ilgili bilgileri içerir. ModelState nesnesi, kullanıcının girdiği verilerin doğru olup olmadığına dair raporlar sunar.

ASP.NET Core MVC, ModelState nesnesinin kullanımını kolaylaştırır. ModelState nesnesine doğrulama için kullanılabilecek birden fazla özellik ekleyebilirsiniz. Bu özellikler, kısıtlamalar, eşleşme ve diğer doğrulama kurallarını içerir.

Birkaç ModelState özelliği şunlardır:

Özellik Adı Açıklama
IsValid Bu, belirli bir Controller veya Action içindeki tüm özelliklerin doğru olup olmadığını belirleyen bir boolean değerdir.
Keys Bu, ModelState nesnesindeki tüm özelliklerin anahtar listesidir.
Values Bu, ModelState nesnesindeki tüm özelliklerin değerlerinin listesidir.

Bu özellikler, kullanıcının verilerinin formda nasıl işlendiğine dair bir göstergedir. ModelState nesnesi, kullanıcının doğrulanması gereken verileri içeren formların güvenli bir şekilde işlenmesine yardımcı olur.


Validation Attributeleri

Form verilerinin doğruluğunu sağlamak için Validation Attributeleri kullanılır. Bu attributeler, form verilerinin belirli kurallara uygun olup olmadığını kontrol eder. Validation Attributeleri, Controller'daki Action metodunda Model Binding işleminden önce kullanılır.

Bazı popüler Validation Attributeleri şunlardır:

  • [Required]: Bu attributenin kullanıldığı özelliklerin null olması kabul edilmez. Bu özellik kullanıcının bir alanı boş bırakmasını önlemek için kullanılır.
  • [StringLength]: Bu attributenin kullanıldığı özelliklerin belirli bir karakter sayısı aralığında olması gerektiğini belirtir. Özellikle kullanıcının girdiği bir metnin belirli bir uzunluk aralığında olmasını sağlamak için kullanılır.
  • [RegularExpression]: Bu attributenin kullanıldığı özelliklerin belirli bir desenle uyumlu olması gerektiğini belirtir. Örneğin, kullanıcının belirli bir formata uygun bir e-posta adresi girmesini sağlamak için kullanılır.

Validation Attributelerinde özellikle dikkat edilmesi gereken nokta, doğrulama işleminin sadece sunucu tarafında gerçekleştirilmesidir. Bu nedenle, kullanıcı tarafından form verilerinin doğru girildiğinin kabul edilmesi doğru değildir. Kullanıcı tarafından girilen veriler her zaman sunucu tarafında doğrulanmalıdır.


Form Verilerini Gönderme

Form verilerini gönderme işlemi, ASP.NET Core MVC uygulamalarında oldukça önemlidir. Kullanıcıların girdiği veriler genellikle bir form aracılığıyla gönderilir. Bu işlemi gerçekleştirmek için HTTP POST isteği kullanılır.

POST isteği ile form verileri Sunucu tarafına gönderilir ve bu veriler işlenir. Kullanıcının girdiği veriler, Controller taraflı Model sınıfında depolanır. Kullanıcının veri girişini doğrulama ve yönetme işlemleri için ModelState nesnesi kullanılabilir.

Form verileri, Controller tarafındaki bir metot üzerinden alınarak işlenir. Bu metot, [HttpPost] niteliği ile işaretlenir ve gerektiği durumda diğer niteliklerle özelleştirilebilir. Örneğin, [ValidateAntiForgeryToken] niteliği, form verilerinin doğrulanmasını sağlamak için kullanılabilir.

Form verilerini gönderirken, genellikle bir view sayfasında yer alan HTML Form elemanı kullanılır. Form elemanı, belirli bir HTTP yöntemi belirtir. Örneğin, bir POST isteği göndermek için form elemanının method niteliği "post" olarak belirlenir.

Form verilerinin Sunucu tarafına gönderilmesi için, form elemanının "action" niteliği belirtilmelidir. Bu nitelik, verilerin işleneceği Controller metotunun adını veya URL adresini gösterir.

Form elemanı içinde yer alan diğer elemanlar, kullanıcının gireceği verilerin türünü ve özelliklerini belirleyebilir. Örneğin, bir input elemanının type niteliği "text" olarak belirtildiğinde, kullanıcının metin girişi yapması sağlanır.

Form verileri gönderildiğinde, Sunucu tarafındaki Controller metotu, kullanıcının girdiği verileri Model sınıfındaki özelliklere depolar. Bu veriler daha sonra işlenebilir veya uygun bir yöntemle depolanabilir.

Form verilerinin gönderilmesi hakkında bu detaylı bilgileri kullanarak, ASP.NET Core MVC uygulamalarında başarılı bir form işleme süreci gerçekleştirebilirsiniz.


HTTP Post

ASP.NET Core MVC'de form verilerinin gönderilmesi için kullanılan HTTP metodu Post'tur. Post metodu kullanılarak form verileri sunucuya gönderilir ve işleme alınır. Post işlemi, bir sayfadan diğerine veri aktarımında kullanılır.

Post işlemi, Form HtmlHelper öğesi kullanılarak oluşturulabileceği gibi Ajax istekleri ile de gönderilebilir. Ajax istekleri, SPA (Tek Sayfalı Uygulamalar) ve web uygulamalarında yaygın olarak kullanılan yöntemlerdendir.

Post isteği ile gönderilen form verileri, Action metodu içerisinde belirtilen parametrelerle alınabilir. Bu sayede, kullanıcının gönderdiği verilerin yapısı model sınıfı doğrultusunda işleme alınabilir.

Bunun yanı sıra, Post isteği gönderme işlemi sırasında hata mesajları gösterilebilir ve kullanıcının bilgilendirilmesi sağlanabilir. Form verilerinin doğruluğu kontrol edilerek, hatalı verilerin kullanıcıya geri gösterilmesi de mümkündür.

Post işlemi, kullanılan veritabanına verilerin güvenli bir şekilde kaydedilmesi için de kullanılır. Bu sayede, verilerin doğru ve güvenli bir şekilde depolanması sağlanır ve uygulamanın performansı artar.


FormCollection

Bir diğer form verisi alma yöntemi ise FormCollection kullanımıdır. Bu yöntemde, formdaki tüm veriler FormCollection nesnesine eklenir ve kullanılabilir hale gelir. FormCollection nesnesi, anahtar-değer çiftleri olarak verileri saklar. Anahtarlar, formdaki input elemanlarının adlarıdır. Değerler, kullanıcının formdaki elemanlara girdiği verilerdir. FormCollection nesnesi, ilgili veriye anahtar adıyla erişilebilir.

FormCollection kullanırken, input elemanlarının adlarını doğru bir şekilde belirlemeniz önemlidir. Aksi takdirde, FormCollection nesnesine eklenmeyebilirler ve veri kaybına neden olabilirler.

FormCollection örneği aşağıda yer almaktadır:

Anahtar Değer
isim Ahmet
soyisim Yılmaz
email ahmet.yilmaz@email.com

Bu örnekte, isim, soyisim ve email input elemanlarının adlarıdır. Bu adlar, FormCollection nesnesinde anahtar olarak kullanılır ve her biri zorunlu bir şekilde doldurulur. Kullanıcı tarafından girilen veriler, FormCollection nesnesinde değer olarak saklanır ve her biri ilgili anahtar ile eşleştirilir. Bu şekilde, formdaki tüm verilere kolayca erişilebilir.


Form Verilerini Depolama

Web uygulamalarında kullanıcıların form doldurma işlemi sıklıkla gerçekleştirilir ve bu verilerin depolanması gerekebilir. Form verilerini depolamak için çeşitli yöntemler mevcuttur. Bu yöntemlerden biri TempData nesnesidir.

TempData nesnesi, form verilerini başka bir işlem için saklamak için kullanılır. Bu nesne, geçici bir veri biçiminde çalışır ve bir Sayfadan diğerine aktarılabilir. TempData nesnesi bir kez kullanıldıktan sonra veriler otomatik olarak silinir.

TempData nesnesi, ModelState nesnesi gibi TempDataDictionary nesnesinden türetilir. Bu nedenle bu nesneyi kullanmak için bir Controller sınıfı içinde önceden tanımlanması gereklidir.

TempData nesnesi, özellikle bir sayfadan diğerine veri aktarılacak durumlarda kullanışlıdır. Örneğin, bir kullanıcının bir kayıt formunu doldurduktan sonra bir Sonuç sayfası görüntülenir ve kullanıcının girdiği veriler sonuç sayfasında gösterilir.

TempData nesnesi kullanırken dikkat etmeniz gereken birkaç nokta vardır. İlk olarak, TempData nesnesi bir kez kullanıldıktan sonra veriler otomatik olarak silinir. İkinci olarak, TempData nesnesi, diğer sayfalardaki TempData nesneleri ile birleştirildiğinde çakışmalar oluşabilir. Bu nedenle, kendisine özgü anahtarları kullanmak önemlidir.

Bu yöntem, form verilerinin geçici olarak saklanması için idealdir. Ancak, kalıcı saklama için veritabanı gibi başka yöntemler kullanmak daha uygun olacaktır.


TempData

TempData, ASP.NET Core MVC'de form verilerinin geçici olarak depolanması için kullanılan bir nesnedir. Bu nesne, form verilerinin farklı sayfalara ve/veya farklı controller ve action'lara taşınması için kullanılır.

TempData nesnesi, bir controller action'ında set edilen değerleri bir sonraki HTTP isteğinde kullanılabilir hale getirir. Örneğin, bir kullanıcı bir formu doldurur ve "kaydet" butonuna tıklar. Form verileri geçerli bir Model sınıfına bind edilir ve bir servis üzerinden veritabanına kaydedilir. Kayıt işlemi başarılı olursa, bir sonraki sayfaya yönlendirilir ve TempData nesnesinde bir "success" mesajı set edilir. Bu mesaj, bir sonraki sayfada gösterilir ve kullanıcıya işlem başarılı olduğu bilgisi verilir.

TempData nesnesi, Controller sınıfı tarafından sağlanır. TempData nesnesine veri eklendiği zaman, ViewBag veya ViewData sınıflarında olduğu gibi bir anahtar ve değer çifti olarak eklenir. Veri, herhangi bir action tarafından okunabilecek şekilde set edilir ve bir sonraki request'te kullanılabilir hale gelir.

TempData nesnesi, veri depolama için kullanılan farklı yöntemlere göre avantajlıdır. Örneğin, Session nesnesi, kullanılabilir bellek miktarını aşabilir ve performans sorunlarına neden olabilir. Benzer şekilde, ViewState, sayfanın boyutunu arttırmak ve sayfa yüklemelerini yavaşlatmak gibi sorunlarla karşılaşabilir. TempData nesnesi ise, sadece bir sonraki request'te kullanılacağı için, uygulama performansını olumsuz etkilemeden form verilerinin geçici olarak depolanmasını sağlar.