Core Mvc

Girilen Bir Peygamber Adını Görüntüleyen Programı Core Mvc Platformunda Area ve Route Tanımlayarak Tasarlama

Core Mvc uygulamalarında projeleri gruplandırarak basitleştirme işlemleri için Area yapısını kullanabilirsiniz. Her bir sayfa linki için sayfaya özel Route ayarı yapabilirsiniz. Bu uygulamada girilen bir peygamber adını görüntüleyen programı Area ve Route tanımlayarak yapacağız.

1. Area Oluşturma

İlk olarak Areas/Peygamberler adında bir Area oluşturuyoruz. Bu Area içinde aşağıdaki klasörler bulunmalı:

Areas
├── Peygamberler
│   ├── Controllers
│   ├── Models
│   ├── Views

Bu yapı, MVC mimarisini koruyarak projemizi modüler hale getirir.

2. Area Kaydı ve Ayarları

Area’ların çalışabilmesi için Program.cs dosyasında endpoint ayarlarını yapmamız gerekiyor:

Program.cs içinde Area desteği ekleyin.

app.MapControllerRoute(
    name: "areas",
    pattern: "{area:exists}/{controller=Peygamber}/{action=Index}/{id?}"
    );

Bu yapı, URL'nin "area/controller/action" şeklinde çalışmasını sağlar.

Örnek URL: https://localhost:5001/Peygamberler/Peygamberler/Ekle

3. Model Oluşturma

Kullanıcının girdiği peygamber adının doğruluğunu kontrol etmek için bir model oluşturacağız.

Peygamber adı boş geçilemez.

Peygamber adı en fazla 50 karakter olabilir.

Areas/Peygamberler/Models/PeygamberModel.cs

using System.ComponentModel.DataAnnotations;

namespace PeygamberUygulamasi.Areas.Peygamberler.Models
{
    public class PeygamberModel
    {
        [Required(ErrorMessage = "Peygamber adı zorunludur.")]
        [MaxLength(50, ErrorMessage = "Peygamber adı en fazla 50 karakter olabilir.")]
        public string PeygamberAdi { get; set; }
    }
}

Açıklamalar:

[Required] → Kullanıcının boş giriş yapmasını engeller.

[MaxLength(50)] → Peygamber adının en fazla 50 karakter olmasını sağlar.

4. Controller Tanımlama

Kullanıcıdan gelen peygamber bilgisini alıp listeye ekleyen ve görüntüleyen bir controller oluşturacağız.

Areas/Peygamberler/Controllers/PeygamberlerController.cs

using Microsoft.AspNetCore.Mvc;
using PeygamberUygulamasi.Areas.Peygamberler.Models;
using System.Collections.Generic;

namespace PeygamberUygulamasi.Areas.Peygamberler.Controllers
{
    [Area("Peygamberler")]
    [Route("Peygamberler/[controller]/[action]")]
    public class PeygamberlerController : Controller
    {
        private static List<string> PeygamberListesi = new List<string>();

        [HttpGet]
        public IActionResult Index()
        {
            return View(PeygamberListesi);
        }

        [HttpPost]
        public IActionResult Ekle(PeygamberModel model)
        {
            if (ModelState.IsValid)
            {
                PeygamberListesi.Add(model.PeygamberAdi);
            }
            return RedirectToAction("Index");
        }
    }
}

Açıklamalar:

[Area("Peygamberler")] → Bu controller'in "Peygamberler" alanına ait olduğunu belirtir.

[Route("Peygamberler/[controller]/[action]")] → Route tanımı dinamik hale getirilmiştir.

static List<string> PeygamberListesi → Girilen peygamber adlarını hafızada saklamak için kullanılır.

Index() → Girilen peygamber adlarını görüntüler.

Ekle(PeygamberModel model) → Kullanıcıdan gelen veriyi Model Binding ile alır ve listeye ekler.

Örnek URL: /Peygamberler/Peygamberler/Ekle

5. View Tasarımı

Kullanıcı girilen peygamber adlarını görebilecek ve yeni peygamber adı ekleyebilecek.

Areas/Peygamberler/Views/Peygamberler/Index.cshtml

@model List<string>
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

<h1>Peygamber Listesi</h1>
<ul>
   @foreach (var peygamber in Model)
   {
       <li>@peygamber</li>
   }
</ul>

<form method="post" action="/Peygamberler/Peygamberler/Ekle">
   <label for="peygamberAdi">Yeni Peygamber Adı:</label>
   <input type="text" id="peygamberAdi" name="PeygamberAdi" required maxlength="50" />
   <button type="submit">Ekle</button>
</form>

@if (!ViewData.ModelState.IsValid)
{
   <ul>
       @foreach (var error in ViewData.ModelState["PeygamberAdi"].Errors)
       {
           <li style="color: red;">@error.ErrorMessage</li>
       }
   </ul>
}

6. Çalıştırma ve Test

Uygulamayı başlatın ve tarayıcıda şu URL'yi ziyaret edin:

https://localhost:5001/Peygamberler/Peygamberler/Index

Bir peygamber adı girin ve ekleyin. Listeye eklendiğini göreceksiniz.

Hatalı girişleri test edin:

Boş geçmeyin! "Peygamber adı zorunludur." hatası alırsınız.

50 karakterden uzun bir şey girin! "Peygamber adı en fazla 50 karakter olabilir." hatası alırsınız.


Etiketler
core mvc area route controller model view 
İlgili Makaleler
Bir İç Açısı Verilen Düzgün Çokgenin Kenar Sayısını Bulan Uygulamayı Core Mvc Platformunda Yapınız
Girilen Bir Tarihi Görüntüleyen Programı Core Mvc Platformunda Area ve Route Tanımlayarak Tasarlama
Girilen Bir Saati Görüntüleyen Programı Core Mvc Platformunda Area ve Route Tanımlayarak Tasarlama
Girilen Bir Mevsimi Görüntüleyen Uygulamayı Areas ve Route Kullanarak Core Mvc Platformunda Yapma
Girilen Bir Yılı Görüntüleyen Uygulamayı Areas ve Route Kullanarak Core Mvc Platformunda Yapma
Girilen Bir Dağ Adını Görüntüleyen Programı Core Mvc Platformunda Area ve Route Tanımlayarak Tasarlama
Girilen Bir Kıta Adını Görüntüleyen Programı Core Mvc Platformunda Area ve Route Tanımlayarak Tasarlama
Girilen Bir Peygamber Adını Görüntüleyen Programı Core Mvc Platformunda Area ve Route Tanımlayarak Tasarlama
Girilen Grad Değerinin Kaç Derece Olduğunu Bulan Uygulamayı Core Mvc Platformunda Yapınız
İki Açısı Verilen Bir Üçgende Üçüncü Açıyı Bulan Core MVC Uygulaması
Dikdörtgenler Prizmasının Hacmini Bulan Uygulamayı Core Mvc Platformunda Yapınız
Rastgele Seçilen N Adet Sayının Varyansını ve Standart Sapmasını Bulan Core Mvc Uygulaması
İki Boylam Arasındaki Şehirlere Ait Saat Farkını Bulan Core Mvc Uygulaması
Girilen Bir Hicri Ay Adını Görüntüleyen Programı Core Mvc Platformunda Area ve Route Tanımlayarak Tasarlama
Atom Numarası ve Nötron Sayısı Verilen Bir Atomun Kütle Numarasını Bulan Core Mvc Uygulaması

Yorum Ekle
   
Kötü İyi