43 Profil düzenleme

using System.ComponentModel.DataAnnotations;

public class ProfilDuzenle:ProfilTemel
{
    [Required]
    public string Id { get; set; }   
}

Öncelikle Ad,Soyad,OkulNumarasi alanları sahip ProfilTemel sınıfı üzerine Id alanını ekleyerek ProfilDuzenle sınıfını oluşturuyoruz.

HesapController.cs dosyasına aşağıdaki kodları ekliyoruz. Profil actionu ile ProfilDuzenle modelini doldurup view içine gönderiyoruz.

 [Authorize]
        public async Task<IActionResult> Profil()
        {
            ProfilDuzenle m = new ProfilDuzenle();
            //giriş yapan kullanıcı adı alınıyor
            string aktifKullaniciAdi = User.Identity.Name;
            //kullanıcının bütün bilgileri db den alınıyor
            var kullanici = await userManager.FindByNameAsync(aktifKullaniciAdi);
            //model alanları dolduruluyor
            m.Ad = kullanici.Ad;
            m.Soyad = kullanici.Soyad;
            m.OkulNumarasi = kullanici.OkulNumarasi;
            m.Id = kullanici.Id;
            return View(m);
        }

HesapController.cs dosyasına aşağıdaki kodları ekliyoruz.

@model ProfilDuzenle
@{
    ViewData["Title"] = "Profilimi düzenle";
}

<h1 class="text-center">Profil düzenle</h1>
<form method="post" asp-antiforgery="true">
    <input asp-for="Id" type="hidden" />
    <div asp-validation-summary="All" class="text-danger"></div>
    <div class="row mb-3">
        <div class="col-3">
            <label asp-for="Ad" class="label-control"></label>
        </div>
        <div class="col-9">
            <input asp-for="Ad" class="form-control">
            <span asp-validation-for="Ad" class="text-danger"></span>
        </div>
    </div>
    <div class="row mb-3">
        <div class="col-3">
            <label asp-for="Soyad" class="label-control"></label>
        </div>
        <div class="col-9">
            <input asp-for="Soyad" class="form-control">
            <span asp-validation-for="Soyad" class="text-danger"></span>
        </div>
    </div>
    <div class="row mb-3">
        <div class="col-3">
            <label asp-for="OkulNumarasi" class="label-control"></label>
        </div>
        <div class="col-9">
            <input asp-for="OkulNumarasi" class="form-control">
            <span asp-validation-for="OkulNumarasi" class="text-danger"></span>
        </div>
    </div>
    <div class="row">
        <div class="col-3"></div>
        <div class="col-9">
            <button type="submit" class="btn btn-success">Güncelle</button>
            <button type="reset" class="btn btn-danger">Sıfırla</button>
        </div>

    </div>
</form>
@section Scripts{
<partial name="_ValidationScriptsPartial" />
}

Profil sayfasında yapılan değişiklikleri aşağıdaki action ile işliyoruz

HesapController.cs dosyasına aşağıdaki kodları ekliyoruz.


        [HttpPost]
        [Authorize]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Profil(ProfilDuzenle m)
        {
            if (ModelState.IsValid)
            {
                var kullanici = await userManager.FindByIdAsync(m.Id);
                kullanici.Ad = m.Ad;
                kullanici.Soyad = m.Soyad;
                kullanici.OkulNumarasi = m.OkulNumarasi;
                await userManager.UpdateAsync(kullanici);
                return View(@"Views\Shared\_basarili.cshtml", "Profiliniz başarıyla güncellendi");

            }
            return View(m);
        }