ASP NET CORE RAZOR PAGE BAKIM TEKNİK SERVİS PROJESİ 030 VIEW MODEL VE MAKİNE INDEX GET METODU

Şimdi benim ne yapmam lazım. Projemde benim kullanıcılarım yani müşterilerim var. Bu müşterilerime ait olan CNC bakım tezgahları olacak. Bir müşterimin birden fazla tezgahı da olabilir. Şimdi benim müşterime birden fazla makine ekleyebilmeliyiz. Dolayısı ile bir müşterinin detay bilgisinde ilgili sahip olduğu makineleri listelemeliyiz. Burada yeni makine ekleme, silme, düzenleme işlemleri yapabilmeliyiz. Her bir makine için yeni bakım kaydı girebilmeliyiz. Eski bakımlarının geçmişini görebilmeliyiz. Bunların hepsini yapıcaz inşallah.

Dersin daha detaylı anlatımı ve kod takibi için videoyu izlemenizi de öneririm:

Gelmek istediğim nokta şu benim bir view model oluşturmam gerek. Bu view model müşterim yani kullanıcımız için olacak.

Dolayısı ile projemde Models > ViewModel klasörü altına geliyor ve burada sağ tıklayarak yeni bir class ekliyorum. Adını da KullaniciMakineViewModel verdim.  Kodlarımızı yazalım:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace GursoyCNCBakim.Models.ViewModel
{
    public class KullaniciMakineViewModel
    {
        public ApplicationUser KullaniciObj { get; set; }
        public IEnumerable< Makine > Makineler { get; set; }
    }
}

Buraya propertylerimi oluşturdum. Bu model classım benim daha sonra oluşturacağım Makinelere ilişkin index sayfası içinde kullanılacak.

Daha sonra Pages > Kullanicilar  altında yer alan Index.cshtml’e geliyor ve daha önce oluşturduğum ve boş bıraktığım td etiketleri içinde düzenleme yapıyorum.

@page
@model GursoyCNCBakim.Pages.Kullanicilar.IndexModel
@{
    ViewData["Title"] = "Index";
    Layout = "~/Pages/Shared/_Layout.cshtml";
}



Kullanici Listesi


@Html.Editor("aramaAdSoyad", new { htmlAttributes = new { @class = "form-control", placeholder = "Ad Soyad..." } });
@Html.Editor("aramaTelefon", new { htmlAttributes = new { @class = "form-control", placeholder = "Telefon..." } });
@Html.Editor("aramaEmail", new { htmlAttributes = new { @class = "form-control", placeholder = "E-mail..." } });
@foreach (var item in Model.UsersListViewModel.ApplicationUserList) { }
@Html.DisplayNameFor(m => m.UsersListViewModel.ApplicationUserList[0].AdSoyad) @Html.DisplayNameFor(m => m.UsersListViewModel.ApplicationUserList[0].PhoneNumber) @Html.DisplayNameFor(m => m.UsersListViewModel.ApplicationUserList[0].Email)
@Html.DisplayFor(m => item.AdSoyad) @Html.DisplayFor(m => item.PhoneNumber) @Html.DisplayFor(m => item.Email)   Makineleri Göster

Burada Pages klasörü altında Makineler diye bir klasör oluşturuyorum. İçine daha sonra Index adında bir razor view ekleyeceğim. Bununla birlikte daha önce eklediğim makine resmini de buraya ekledim.

Bakalım nasıl görünüyor.

Şu an her şey güzel gibi. Şimdi gelelim Pages > Makineler klasörü altına Index razor page ekleme işlemine, bunun için iligli klasöre geliyor ve sağ tıklayarak add diyorum ve yeni bir Razor Page ekliyorum adını Index veriyrum. Page-model class olacak, layout kullanacak şekilde ayarlarımı yapıyorum.

Buranın pagemodel tarafına geliyor ve kodlarımı yazıyorum.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using GursoyCNCBakim.Data;
using GursoyCNCBakim.Models.ViewModel;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;

namespace GursoyCNCBakim.Pages.Makineler
{
    public class IndexModel : PageModel
    {
        private readonly ApplicationDbContext _db;

        [BindProperty]
        public KullaniciMakineViewModel KullaniciMakineViewModel { get; set; }

        public IndexModel(ApplicationDbContext db)
        {
            _db = db;
        }

        public async Task< IActionResult > OnGet(string kullaniciID = null)
        {
            if (kullaniciID == null)
            {
                var claimsIdentity = (ClaimsIdentity)User.Identity;
                var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
                kullaniciID = claim.Value;
            }

            KullaniciMakineViewModel = new KullaniciMakineViewModel()
            {
                Makineler = await _db.Makine.Where(a => a.KullaniciId == kullaniciID).ToListAsync(),
                KullaniciObj = await _db.ApplicationUser.FirstOrDefaultAsync(a => a.Id == kullaniciID)
            };

            return Page();
        }
    }
}

Daha detaylı bilgi için dersin videosuna bakınız, bir sonraki derste görüşmek üzere..

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir