Günlük hayatta en çok bildiğimiz konulardan biri de mevsimler ve bu mevsimlere ait olan aylardır. Bı uygulamada birbirinden bağımsız olan bu bilgileri ayrı ayrı dizide tanımlayıp mevsimlere ait ayları select etiketiyle web sayfasında göstereceğiz.
Visual Studio 2022 programını açalım.
Ekrana gelen Create a new project diyalog pencersinde dil olarak c#, platform olarak All platforms, ortam olarak Web seçelim. Ekrana gelen şablonlardan Asp.Net Core Empty seçelim. Next diyerek devam edelim.
Proje ismi olarak MevsimlerListesi yazalım. Next diyerek devam edelim. Ekrana gelen pencerede Framework olarak .Net 8,0 seçelim. Configure for Https onay kutusunu iptal edelim. Create diyerek projeyi oluşturalım.
Böylece boş bir Core projesi oluşturmuş olduk. Sıra geldi projede MVC platformlarını kurma işlemini yapmaya. Öncelikle program.cs isimli dosyada projenin Mvc projesi olduğunu belirtelim.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllerWithViews();
var app = builder.Build();
app.Run();
Daha sonra projeye M harfini temsil eden Models, V harfini temsil eden Views, C harfini temsil eden Controllers klasörlerini ekleyelim. Controllers klasörü içine MevsimComtroller isminde bir controller dosyası ekleyelim. Dosyamızın içeriği aşağıdaki gibi olacaktır.
using Microsoft.AspNetCore.Mvc;
namespace MevsimlerListesi.Controllers
{
public class MevsimController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
Burada dosya ismi verilirken şunlara dikkat etmeliyiz. Proje ilk çalıştırıldığında hangi bölüme gidecekse o bölüm Controller kısmında belirtilir. Bu dosyada proje ilk Mevsim kısmına gidecektir. Controller yazısı ise o dosyanın hangi amaç için kullanıldığını belirtir. Controller dosyası bir view çalıştırır. Burada view dosyamız Index dosyasıdır. Bu dosyayı Aylar olarak değiştirelim. Şimdi bu dosyayı Views/Mevsim klasörü altında oluşturalım. Bu klasör içinde bir Razor View dosyası oluşturulur. Dosyayı şöyle düzenleyelim.
@{
ViewData["Title"] = "Mevsim ve Ay Seçimi";
}
Projemizi çalıştıralım. Web sayfası çalışmayacak ya da wwwroot klasörü içinde yer alan dosyayı gösterecektir. Çünkü projenin başlangıç dosyasını belirtmedik. Bunu program.cs tarafında şöyle yapmalıyız.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllerWithViews();
var app = builder.Build();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Mevsim}/{action=Aylar}"
);
app.Run();
Projeyi çalıştıralım. Hatasız bir şekilde sonucu görürsünüz. Controller tarafında gerekli işlemleri yapalım.
using Microsoft.AspNetCore.Mvc;
namespace WebApplication2.Controllers
{
public class MevsimController : Controller
{
public IActionResult Aylar()
{
// Mevsimler dizisi
string[] seasons = { "İlkbahar", "Yaz", "Sonbahar", "Kış" };
// Her mevsime ait aylar dizisi
string[] months = { "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"};
// ViewBag ile mevsimlere ait ayları taşımak
ViewBag.Seasons = seasons;
ViewBag.Months = months;
return View();
}
}
}
Şimdide views tarafında gerekli işlemleri yapalım.
@{
ViewData["Title"] = "Mevsim ve Ay Seçimi";
}
@{
var months = ((string[])ViewBag.Months);
var x = 0;
}
<h3>Mevsim ve Aylar</h3>
<select id="season" name="selectedSeason" size="16">
@foreach (var season in ViewBag.Seasons)
{
<optgroup label=@season>
@for (int i = 2; i < months.Length+3; i++)
{
<option>@months[i]</option>
x++;
@if (x>2)
{
x = 0;
break;
}
}
</optgroup>
}
</select>
Projeyi çalıştırıp sonucu görelim.