Breaking News:

ASP.NET Core ile Kayıt Ekleme

Gerekli Entity Framework Core kurulumunu önceki yazıda yapmıştık. Bu yazıda ise kayıt ekleme için gerekli ilk controller'i yazacağız. Kelimes adında bir tane tablomuz vardı. Bu tabloya kayıt eklenmiş mi daha sonrasında kontrol edeceğiz.

İlk olarak Kelime adında bir controller oluşturuyorum (KelimeController.cs). Sonrasında ise Ekle adında bir action method yazıyoruz, bu method HttpGet kullanacak:

using Microsoft.AspNetCore.Mvc;

namespace OgrenKelime.Controllers
{
public class KelimeController : Controller
{
public IActionResult Index()
{
return View();
}

[HttpGet]
public IActionResult Ekle()
{
return View();
}
}
}
Oluşturulan bu method için Ekle adında(Ekle.cshtml) boş bir view oluşturalım. Views klasörü içinde Kelime/Ekle.cshtml olarak dosyamız görülecektir.

Kullanıcının kayıt eklemesi için bir arayüz oluşturmamız lazım. Kayıt ekleme formunu bootstrap ile basit bir şekilde oluşturalım:
@model OgrenKelime.Models.Kelime

@{
<h1>Kelime Ekle</h1>
<form method="post" action="Ekle">
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="Kelimeyi yaz" name="kelime" asp-for="SKelime">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Kelimenin anlamını gir" name="anlam" asp-for="SAnlam">
</div>
<div class="col">
<button type="submit" class="btn btn-primary">Kaydet</button>
</div>
</div>
</form>
}
Şimdi HttpPost metodunu yazalım. Bu metot içerisinde veri tabanına kayıt işlemi sağlanacak. Tabi bunu yapabilmek için DbContext kullanmamız gerek. Kayıt işlemi bittikten sonra Diğer Ekle metoduna redirect sağlanacak:

İlk olarak bir constructor metodu yazalım:

using Microsoft.AspNetCore.Mvc;
using OgrenKelime.Models;

namespace OgrenKelime.Controllers
{
public class KelimeController : Controller
{
private readonly DataContext _context;
public KelimeController(DataContext _context)
{
this._context = _context;
}
...
Ekle metodunu yazmadan evvel Kelime model yapısına bazı önemli eklemeler yapmak istiyorum. Öncelikle Id property'sini PK olarak tanımlamak ve sonrasında kayit esnasında o an hangi tarih ise o tarih kaydedilsin.
using System.ComponentModel.DataAnnotations;

namespace OgrenKelime.Models
{
public class Kelime
{
[Key]
public int Id { get; set; }
public string? SKelime { get; set; }
public string? SAnlam { get; set; }
public DateTime DtKayitTarihi { get; set; } = DateTime.Now;
}
}
Bu değişiklilerden sonra veri tabanı için migration ve güncelleme yapmamız gerek. Package Manager Console'u açalım ve :
PM> Add-Migration "2- kelime"
PM> Update-Database
SQL Server Management Studio üzerinden kontrol edersek değişiklik başarılı şekilde gerçekleştirildi:
ASP.NET Core Kayıt Ekleme
Şimdi metotu yazmaya başlayabiliriz:
...

namespace OgrenKelime.Controllers
{
public class KelimeController : Controller
{
private readonly DataContext _context;

...

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

[HttpPost]
public async Task<IActionResult> Ekle(Kelime kelime)
{
Kelime yeniKelime = new Kelime()
{
SKelime = kelime.SKelime,
SAnlam = kelime.SAnlam
};

await _context.Kelimes.AddAsync(yeniKelime);
await _context.SaveChangesAsync();

return RedirectToAction("Ekle");
}
}
}
Artık ekleme eylemini test edebiliriz. Projeyi çalıştırıp, https://localhost:[portnumber]/Kelime/Ekle adresine gidelim. Aşağıdaki gibi ilk kaydımızı ekleyelim:

ASP.NET Core Kayıt Ekleme
Bakalım veri tabanına kayıt eklenmiş mi, kontrol edelim.
ASP.NET Core Kayıt Ekleme
Kayıt geldi ancak Kelime ve Anlam değerleri null olarak görülüyor. Muhtemelen html tarafından kaynaklı bir durum ve asp-for bildirimi çalışmıyor:
@model OgrenKelime.Models.Kelime
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@{
<h1>Kelime Ekle</h1>
<form method="post" action="Ekle">
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="Kelimeyi yaz" asp-for="SKelime">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Kelimenin anlamını gir" asp-for="SAnlam">
</div>
<div class="col">
<button type="submit" class="btn btn-primary">Kaydet</button>
</div>
</div>
</form>
}
Bu işlemden sonra tekrar deneyelim:
ASP.NET Core Kayıt Ekleme
Eklediğimiz son veri başarılı bir şekilde eklenmiş. 

Tasarım kısmında bir terslik var, çünkü layout tanımlamadık:
@model OgrenKelime.Models.Kelime
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@{
ViewData["Title"] = "Kelime Ekle";
Layout = "~/Views/_Layout.cshtml";
}
@{
<h1>Kelime Ekle</h1>
<form method="post" action="Ekle">
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="Kelimeyi yaz" asp-for="SKelime">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Kelimenin anlamını gir" asp-for="SAnlam">
</div>
<div class="col">
<button type="submit" class="btn btn-primary">Kaydet</button>
</div>
</div>
</form>
}

Sonuca bakalım:
ASP.NET Core Kayıt Ekleme
Elbette daha fazla düzenlemeye ihtiyaç var, bu da artık sonraki yazılara kaldı.

Hiç yorum yok:

Blogger tarafından desteklenmektedir.