Visual Studio muhitida ASP.NET Core MVC loyihasini ishlab chiqish

REJA:
Loyiha modelini shakllantirish ..................................................................................................................... 5
Visual Studio – bu Microsoft tomonidan ishlab chiqilgan integratsiyalashgan dasturlash muhiti (IDE) 
bo‘lib, dasturchilar uchun turli xil dasturiy ta’minotlarni yaratish jarayonini osonlashtirishga xizmat 
qiladi. Visual Studio yordamida Windows, macOS, iOS, Android, veb va boshqa platformalar uchun 
dasturlar ishlab chiqish mumkin. ................................................................................................................. 5
Visual Studio dastur ishlab chiqaruvchilar uchun qulay va ko‘p funksiyali platforma hisoblanadi. Bu 
dasturchilarga loyiha yaratish, boshqarish, xatolarni topish va loyihalarni muvaffaqiyatli amalga 
oshirishda katta yordam beradi. Yangi boshlovchilar va tajribali dasturchilar uchun birdek foydali bo‘lgan 
ushbu vosita dasturlash olamida eng mashhur IDElardan biri hisoblanadi. ................................................. 5
Loyiha modelini shakllashtirish uchun internetdan o‘zimizning mavzumizga mos shablon topamiz va uni 
yuklab olamiz. Mening mavzuyim “O‘quv markazi” bo‘lganligi uchun Free template saytidan 
“eLEARNING” shablonini yuklab oldim. ....................................................................................................... 5
1. Namespace va Kutubxonalar ........................................................................................................... 8
2. AppDbContext klassi ........................................................................................................................ 8
3. Konstruktor ...................................................................................................................................... 8
4. DbSet-lar .......................................................................................................................................... 8
5. Modeldagi jadvallar ......................................................................................................................... 9
6. Foydasi ............................................................................................................................................. 9
1. Klass e'lon qilish ............................................................................................................................... 9
2. Property (xususiyatlar) ..................................................................................................................... 9
3. Foydalari ........................................................................................................................................ 10
4. Tahlil qilish misoli ........................................................................................................................... 10
1. Namespace .................................................................................................................................... 11
2. Kurs klassi ...................................................................................................................................... 11
3. Property-lar (xususiyatlar) ............................................................................................................. 11
4. Aloqalar (Relationships) ................................................................................................................. 11
5. Foydalari ........................................................................................................................................ 12
6. Ko‘pga-ko‘p aloqalar ...................................................................................................................... 12
1. Umumiy maqsad ............................................................................................................................ 12
2. Xususiyatlar (Property-lar) ............................................................................................................. 13
3. Aloqalar (Relationships) ................................................................................................................. 13
4. Foyda va qo‘llanilishi ...................................................................................................................... 13
5. Kodingizni amalda ishlatish ............................................................................................................ 13
1. Umumiy maqsad ............................................................................................................................ 14
2. Xususiyatlar (Property-lar) ............................................................................................................. 14
3. Aloqalar (Relationships) ................................................................................................................. 14
4. Foyda va qo‘llanilishi ...................................................................................................................... 15 5. Amaliyotda ishlatilishi .................................................................................................................... 15
1. Umumiy maqsad ............................................................................................................................ 16
2. Xususiyatlar (Properties) ................................................................................................................ 16
3. Aloqalar (Relationships) ................................................................................................................. 17
4. Foyda va qo‘llanilishi ...................................................................................................................... 17
Loyiha kontroller va ko‘rinishlarini yaratish ............................................................................................... 18
Asosiy tushunchalar: .......................................................................................................................... 18
Umumiy funksionallik: ....................................................................................................................... 18
Loyihadan foydalanish bo‘yicha ko‘rsatma ................................................................................................ 21
1. Loyihani ishga tushirish ...................................................................................................................... 21
2. Loyiha tuzilmasi ................................................................................................................................. 21
4. Funktsional imkoniyatlar .................................................................................................................... 22
4. Ma’lumotlar bazasi bilan ishlash ........................................................................................................ 25
5. Loyihani moslashtirish ....................................................................................................................... 26
6. Test qilish ........................................................................................................................................... 26
Xulosa ........................................................................................................................................................ 27
Foydalanilgan adabiyotlar .......................................................................................................................... 28
2 3 Kirish
Dasturiy   injiniring   fanida   dasturiy   ta’minot   muhim   ro‘l   o‘ynaydi.   Ushbu
maqsadda biz Microsoftning Visual Studio dasturidan foydalandik, bu esa dasturiy
loiyhalarni ishlab chiqish uchun qulay platforma sifatida tanlangan. Visual Studio
dasturlash   jarayoni   uchun   kuchli   vositalar,   qo‘shimcha   imkoniyatlar   va
foydalanuvchilarga   qulay   interfeys   taqdim   etadi.   Bu   dasturiy   muhit   nafaqat
dasturlarni   yozishga,   balki   ularni   sinovdan   o‘tkazishga   va   joylashtirishga   ham
yordam   beradi.   Visual   Studio‘dan   foydalanishimizning   sababi,   uning   bir   qator
qulayliklari   va   moslashuvchanliklaridir.   Dasturlash   muhitini   yaratish   jarayonida
dasturchilar   uchun   ko‘plab   resurslar   va   plaginlar   mavjud.   Masalan,   C#,   Visual
Basic,   va   F#   kabi   turli   dasturlash   tillarini   qo‘llab-quvvatlashi,   dasturiy
ta’minotning   rivojlanishini   tezlashtiradi.   Shuningdek,   Visual   Studio   ichidagi
debugging   (xatolarni   aniqlash)   vositalari   koddagi   muammolarni   tez   va   oson
aniqlash va tuzatishga imkon beradi. Dasturiy injiniring jarayonida samarali ishlab
chiqish   va   tezkor   sinovlar   o‘tkazish   uchun   Visual   Studio‘ning   xilma-xil
imkoniyatlaridan,   jumladan,   "IntelliSense"   funksiyasidan   foydalanamiz,   bu
dasturchilarga   kod   yozishda   yordam   beradi,   sintaksisni   to‘g‘ri   ishlashini
ta’minlaydi   va   tezda   kerakli   xususiyatlarni   topishga   yordam   beradi.   Ushbu
platforma,   shuningdek,   git   versiya   nazorati   bilan   integratsiyalangan   bo‘lib,   bu
jamoaviy   ishlashda   muhim   ahamiyatga   ega.   Dasturchilar   o‘rtasidagi   almashinish
va   hamkorlik   jarayonini   soddalashtiradi,   shuning   uchun   kodeklarni   birgalikda
ishlab chiqish va yangi funksiyalarni birgalikda sinab ko‘rish mumkin.
Kurs ishimiz davomida Visual Studio‘dan qanday foydalanganimizni batafsil
bayon etamiz. Bu jarayon ishlab chiqilgan dasturiy ta’minotni  sinovdan  o‘tkazish
va   sifatni   ta’minlashga,   hamda   dasturlarni   samarali   yaratishga   qaratilgan.
Shuningdek,   dasturiy   innavatsiyalarga   asoslangan   funksiyalarni   qo‘shish   va
foydalanuvchilar   ehtiyojlarini   qondirishda   Visual   Studioning   o‘rni   hamda
ahamiyatini tushuntirib beramiz. 
Ushbu   ishni   tugatgach,   talabalarni   dasturiy   ta’minotni   ishlab   chiqarish
jarayonidagi  zamonaviy asboblar  va vositalar  bilan tanishtirish, ularni  amaliyotda
qo‘llay   olishlariga   yordam   bera   olishimizni   kutamiz.   Visual   Studio   dasturi,
shuningdek,   dasturiy   injiniring   sohasida   samarali   ishlash   uchun   zarur   bo‘lgan
ko‘nikmalarni  shakllantirishga xizmat qiladi.
4 Loyiha modelini shakllantirish
Visual Studio – bu Microsoft tomonidan ishlab chiqilgan integratsiyalashgan
dasturlash   muhiti   (IDE)   bo‘lib,   dasturchilar   uchun   turli   xil   dasturiy   ta’minotlarni
yaratish   jarayonini   osonlashtirishga   xizmat   qiladi.   Visual   Studio   yordamida
Windows,   macOS,   iOS,   Android,   veb   va   boshqa   platformalar   uchun   dasturlar
ishlab chiqish mumkin.
Visual   Studio   dastur   ishlab   chiqaruvchilar   uchun   qulay   va   ko‘p   funksiyali
platforma   hisoblanadi.   Bu   dasturchilarga   loyiha   yaratish,   boshqarish,   xatolarni
topish va loyihalarni muvaffaqiyatli amalga oshirishda katta yordam beradi. Yangi
boshlovchilar   va   tajribali   dasturchilar   uchun   birdek   foydali   bo‘lgan   ushbu   vosita
dasturlash olamida eng mashhur IDElardan biri hisoblanadi.
Loyiha   modelini   shakllashtirish   uchun   internetdan   o‘zimizning   mavzumizga
mos shablon  topamiz va uni  yuklab olamiz. Mening  mavzuyim  “O‘quv markazi”
bo‘lganligi uchun Free template saytidan “eLEARNING” shablonini yuklab oldim.
1-rasm.  Shablon fayllari.  
Kerakli shablonni yuklab bo‘lgandan keyin Visual Studio dasturiga kirib 
yangi proyekt yaratamiz.
5 2-rasm.  Controller  fayli.
Пустой   шаблон   ASP.NET   Core(Microsoft)   ni   tanlaymiz   va   yaratgan
proyektimizga nom beramiz. 
3-rasm.  NuGet packets.
Shu 3 ta NuGet paketlarni o‘rnatamiz:
- Microsoft.EntityFrameworkCore.Design(9.0.0)
- Microsoft.EntityFrameworkCore.SqlServer(9.0.0)
- Microsoft.EntityFrameworkCore.Tools(9.0.0)
4-rasm.  Wwwroot fayli.
Yangi fayl  ochamiz va unga “wwwroot” deb nom beramiz. Bu faylni  ichiga
saytdan olgan shablonimizning fayllarini ko‘chirib o‘tkazamiz. 
6 1. css :
o Bu   papkada   loyihaning   Cascading   Style   Sheets   (CSS)   fayllari
saqlanadi.  Ular veb-sahifalarning ko‘rinishini boshqaradi.
2. img :
o Bu   papkada   veb-saytda   ishlatiladigan   rasm   fayllari   joylashadi.
Masalan, logotiplar, fon rasmlari va boshqa tasvirlar.
3. js :
o Bu   papka   JavaScript   fayllari   uchun.   Bu   kodlar   veb-sahifaning
dinamik harakatini va funksiyalarini ta’minlaydi.
4. lib :
o Odatda bu papka  kutubxonalar  (libraries) uchun ishlatiladi. Masalan,
Bootstrap, jQuery kabi tashqi kutubxonalar bu yerda saqlanadi.
5. scss :
o Bu   papkada   Sass/SCSS   fayllari   saqlanadi.   Ular   CSS-dan   yanada
murakkabroq   dizayn   yaratishda   ishlatiladigan   CSS   preprocessori
hisoblanadi.
Ushbu   struktura   veb-loyihalarni   tartibli   saqlash   uchun   ishlatiladi   va   turli
resurslarni tez topishni osonlashtiradi. 
5-rasm.  Models papkasi.
MVC   (Model-View-Controller)   —   bu   dasturlarni   yaratishda   keng
qo‘llaniladigan   dizayn   arxitekturasi.   U   dasturiy   ta’minotni   uchta   asosiy
komponentga ajratadi:  Model ,  View  va  Controller . Bu arxitektura dastur kodining
tartibini   saqlashga,   samarali   ishlashga   va   kengaytirish   imkoniyatlarini   oshirishga
yordam beradi. [1]
Models   nomli   yangi   papka   yaratamiz.   Uning   ichiga   kerakli   classlarni   ochib
olamiz. Bular:
- AddDbContext.
- Contacts.
- Kurs.
- Oqituvchi.
- Talaba.
- TalabaKurs.
7 6-rasm.  AppDbContext classi.
Yuqoridagi rasm  Entity Framework Core  dan foydalanib, kontekst (context)
yaratish jarayonini ko‘rsatadi.
1. Namespace va Kutubxonalar
using Microsoft.EntityFrameworkCore;
Bu   kod   Entity   Framework   Core   kutubxonasidan   foydalanayotganingizni
bildiradi.   Bu   ORM   (Object-Relational   Mapping)   vositasi   yordamida   ma’lumotlar
bazasi bilan ishlash osonlashtiriladi. [5]
2. AppDbContext  klassi
public class AppDbContext : DbContext
 AppDbContext   -   ma’lumotlar   bazasi   bilan   ishlash   uchun   foydalaniladigan
kontekst klassi. Bu  DbContext  dan meros qilib olingan. [2]
 Bu   klass   orqali   ma’lumotlar   bazasidagi   jadval   va   ular   bilan   ishlash
imkoniyati yaratiladi.
3. Konstruktor
public AppDbContext(DbContextOptions<AppDbContext> options)
     : base(options)
 Bu konstruktor  AppDbContext  ni sozlash uchun ishlatiladi.
 options   -   konfiguratsiyalarni   ( connection   string   va   boshqa   sozlamalarni)
uzatish uchun ishlatiladi. [2]
4. DbSet-lar
public DbSet<Talaba> Talabalar { get; set; }
public DbSet<TalabaKurs> TalabaKurslar { get; set; }
public DbSet<Oqituvchi> Oqituvchilar { get; set; }
public DbSet<Kurs> Kurslar { get; set; }
public DbSet<Contact> Contacts { get; set; }
8  Har bir  DbSet  ma’lumotlar bazasidagi bitta jadvalga mos keladi.
 DbSet<T>  generik turi orqali jadvalda saqlanadigan ma’lumotlarning klassi
belgilanadi. [2]
 Masalan: 
o DbSet<Talaba>   -   Talaba   klassiga   mos   keladi   va   ma’lumotlar
bazasidagi "Talabalar" jadvaliga ishlov beradi.
o DbSet<Contact>  - "Contacts" jadvalini ifodalaydi.
5.  Modeldagi jadvallar
 Talaba ,   TalabaKurs ,   Oqituvchi ,   Kurs ,   va   Contact   klasslari   mos   ravishda
ma ’ lumotlar   bazasidagi   jadvallarni   ifodalaydi .
 Ushbu   jadvallar   uchun   DbContext   orqali   CRUD   (Create,   Read,   Update,
Delete) operatsiyalar bajarilishi mumkin.
6.  Foydasi
 Ushbu   AppDbContext   klassi   orqali   ma’lumotlar   bazasi   bilan   ishlash   ancha
qulay   bo‘ladi.   Har   bir   jadval   DbSet   orqali   ishlatiladi   va   LINQ   so‘rovlari
yordamida ma’lumot olish yoki o‘zgartirish mumkin bo‘ladi.
7-rasm.  Contact classi.
Bu   klass   odatda   Entity   Framework   Core   bilan   ishlaganda   ma’lumotlar
bazasidagi jadvalga mos keladigan model sifatida ishlatiladi. 
1. Klass e'lon qilish
public class Contact
 Contact   -   bu   ma’lumotlar   bazasida   "Contacts"   jadvali   sifatida   yaratilishi
mumkin bo‘lgan model.
 public   -  ushbu   klass   boshqa   fayllardan  foydalanish  uchun   ochiq  ekanligini
bildiradi.
2.  Property (xususiyatlar)
Quyidagi xususiyatlar "Contact" jadvali ustunlariga mos keladi:
a. Id
public int Id { get; set; }
9  Id  - jadvadagi birlamchi kalit sifatida ishlatiladigan ustun.
 Ma’lumotlar turi:  int  (integer) , ya’ni butun son.
 Entity Framework avtomatik ravishda uni birlamchi kalit sifatida belgilaydi.
b.  Name
public string Name { get; set; }
 Name  - foydalanuvchining ismi uchun mo‘ljallangan ustun.
 Ma’lumotlar turi:  string , ya’ni matn.
c.  Email
public string Email { get; set; }
 Email  - foydalanuvchining elektron pochta manzili uchun ustun.
 Ma’lumotlar turi:  string .
d.  Subject
public string Subject { get; set; }
 Subject  - xabarning mavzusi uchun ustun.
 Ma’lumotlar turi:  string .
e.  Message
public string Message { get; set; }
 Message  - foydalanuvchi yuborgan xabar matni uchun ustun.
 Ma’lumotlar turi:  string .
3.  Foydalari
 Contact   klassi   foydalanuvchilar   bilan   bog‘liq   xabarlarni   boshqarish   uchun
ishlatiladi.
 Ushbu   klass   yordamida   ma’lumotlar   bazasidagi   "Contacts"   jadvali   orqali
CRUD   (Create,   Read,   Update,   Delete)   operatsiyalarni   amalga   oshirish
mumkin bo‘ladi.
 Xususiyatlar   "ustunlar"   sifatida   ishlaydi   va   Entity   Framework   bu
ma’lumotlarni jadvalga avtomatik ravishda moslashtiradi.
4.  Tahlil qilish misoli
                        Agar   siz   "Contacts"   jadvali   uchun   ma’lumot   kiritishni   xohlasangiz,
quyidagi ma’lumotlar saqlanadi:
 Id  - avtomatik generatsiya qilinadi.
 Name  - foydalanuvchining ismi.
 Email  - foydalanuvchining elektron pochta manzili.
 Subject  - mavzu (masalan, "Savol" yoki "Shikoyat").
 Message  - foydalanuvchining yuborgan matni.
10 8-rasm.   Kurs classi.
Bu   klass   Entity   Framework   orqali   ma’lumotlar   bazasidagi   "Kurslar"   jadvali
uchun model sifatida ishlatiladi.
1.  Namespace
namespace Project12.Models
 Project12.Models  - bu klassni boshqa joylarda ishlatish uchun joylashuvini
aniqlaydi.  Bu struktura kodni tartibda saqlash uchun ishlatiladi.
2.  Kurs  klassi
public class Kurs
 Kurs  - kurslar haqidagi ma’lumotlarni saqlash uchun yaratilgan model.
 Ushbu   klass   Entity   Framework   orqali   ma’lumotlar   bazasida   jadval   sifatida
yaratiladi.
3.  Property-lar (xususiyatlar)
a.  KursId
public int KursId { get; set; } // Birinchi kalit (primary key)
 KursId  - jadvadagi birlamchi kalit (primary key).
 Ma’lumot turi:  int , ya’ni butun son.
 Entity Framework avtomatik ravishda bu xususiyatni birlamchi kalit sifatida
qabul qiladi.
b.  KursNomi
public string KursNomi { get; set; }
 KursNomi  - kursning nomi saqlanadi.
 Ma’lumot turi:  string , ya’ni matn.
4.  Aloqalar (Relationships)
a.  O‘qituvchi bilan bog‘lanish
public int OqituvchiId { get; set; }
public Oqituvchi Oqituvchi { get; set; }  OqituvchiId  - kursni o‘qitayotgan o‘qituvchining identifikatori (tashqi kalit
- foreign key).
 Oqituvchi   -   Oqituvchi   klassi   bilan   bog‘lanish   (navigatsiya   xususiyati).
Bu orqali kursni o‘qitayotgan o‘qituvchi ma’lumotlarini olish mumkin.
b.  TalabaKurslari bilan bog‘lanish
public ICollection<TalabaKurs> TalabaKurslari { get; set; }
 TalabaKurslari  - ushbu kursga qatnashayotgan talabalar ro‘yxati.
 ICollection<TalabaKurs>   -   talabalar   va   kurslar   o‘rtasidagi   ko‘pga-ko‘p
(many-to-many) aloqani ifodalaydi.
5.  Foydalari
 Bu klass orqali kurslar haqidagi ma’lumotlar bilan ishlash osonlashadi.
 Ma’lumotlar bazasida  Kurslar  jadvali yaratiladi va quyidagilar saqlanadi: 
o Kurs identifikatori (KursId).
o Kurs nomi (KursNomi).
o Kursni o‘qitayotgan o‘qituvchi.
o Kursga qatnashayotgan talabalar.
6.  Ko ‘ pga - ko ‘ p   aloqalar
TalabaKurs   jadvali   orqali   kurslar   va   talabalar   o ‘ rtasidagi   ko ‘ pga - ko ‘ p
aloqani   boshqarish   mumkin .   Bu   struktura   kursga   bir   nechta   talaba  qatnashishi   va
bir talaba bir nechta kursda qatnashishi mumkinligini ifodalaydi.
9-rasm.   Oqituvchi classi.
Bu  model  o‘qituvchilar   haqidagi   ma’lumotlarni  saqlash   va ularni   boshqarish
uchun ishlatiladi. 
1. Umumiy maqsad
Oqituvchi  sinfi o‘qituvchilarning ma’lumotlarini saqlash uchun ishlatiladi. U
ma’lumotlar   bazasida   "Oqituvchilar"   jadvali   sifatida   aks   etadi   va   o‘qituvchilar
o‘qitayotgan kurslar bilan bog‘lanadi.
12 2. Xususiyatlar (Property-lar)
a. OqituvchiId (Primary Key)
public int OqituvchiId { get; set; } // Birinchi kalit (primary key)
 OqituvchiId  — har bir o‘qituvchini noyob identifikatsiya qiluvchi birlamchi
kalit (primary key).
 Turi:  int .
b. Ism
public string Ism { get; set; }
 Ism  — o‘qituvchining ismini saqlaydi.
 Turi:  string .
c. Familiya
public string Familiya { get; set; }
 Familiya  — o‘qituvchining familiyasini saqlaydi.
 Turi:  string .
d. ImagePath
public string ImagePath { get; set; }
 ImagePath   —   o‘qituvchining   rasmini   saqlash   uchun   fayl   yo‘li   (path)
ma’lumotini saqlaydi.
 Bu xususiyat orqali o‘qituvchiga tegishli rasmni brauzerda ko‘rsatish uchun
ishlatiladi.
3. Aloqalar (Relationships)
O‘qitayotgan kurslari
public ICollection<Kurs> OqitayotganKurslar { get; set; }
 OqitayotganKurslar  — o‘qituvchi o‘qitayotgan barcha kurslarni saqlaydi.
 ICollection<Kurs>   turi   o‘qituvchi   va   kurslar   o‘rtasidagi   birga-ko‘p   (one-
to-many) aloqani ifodalaydi. 
o Bir o‘qituvchi bir nechta kursga mas'ul bo‘lishi mumkin.
4. Foyda va qo‘llanilishi
 Oqituvchi   modeli   o‘qituvchilar   haqidagi   ma’lumotlarni   saqlash   uchun
ishlatiladi.
 Kurslar   bilan   bog‘lanish   orqali   qaysi   o‘qituvchi   qaysi   kurslarni
o‘qitayotganini osongina aniqlash mumkin.
 Rasm   yo‘li   orqali   o‘qituvchi   haqida   ko‘proq   vizual   ma’lumotlar   taqdim
etiladi.
5. Kodingizni amalda ishlatish
1. Ma’lumotlar   bazasi:   Bu   model   ma’lumotlar   bazasida   o‘qituvchilar
jadvalini hosil qiladi.
13 2. Navigatsion   aloqa:   O‘qituvchi   va   kurslar   o‘rtasidagi   bog‘lanish   orqali
tegishli   ma’lumotlarni   chiqarish   qulay   bo‘ladi.   Masalan,   bir   o‘qituvchining
barcha kurslarini olish.
10-rasm.   Talaba classi.
Ushbu   kod   Talaba   sinfi   uchun   yozilgan   bo‘lib,   u   talabalar   haqidagi
ma’lumotlarni saqlash va boshqarish uchun ishlatiladi. 
1. Umumiy maqsad
Talaba   sinfi   talabalarning   ma’lumotlarini   saqlash   uchun   ishlatiladi.   U
ma’lumotlar   bazasida   "Talabalar"   jadvali   sifatida   aks   etadi   va   talabalar   kurslari
bilan bog‘lanadi.
2. Xususiyatlar (Property-lar)
a. TalabaId (Primary Key)
public int TalabaId { get; set; } // Birinchi kalit (primary key)
 TalabaId   —  har   bir  talabani  noyob  identifikatsiya  qiluvchi  birlamchi   kalit
(primary key).
 Turi:  int .
b. Ism
public string Ism { get; set; }
 Ism  — talabani ismini saqlaydi.
 Turi:  string .
c. Familiya
public string Familiya { get; set; }
 Familiya  — talabani familiyasini saqlaydi.
 Turi:  string .
3. Aloqalar (Relationships)
TalabaKurslari
public ICollection<TalabaKurs> TalabaKurslari { get; set; }
 TalabaKurslari  — talabaning kurslari bilan bog‘lanishini saqlaydi.
14  ICollection<TalabaKurs>  turi talabalar va kurslar o‘rtasidagi   ko‘pga-ko‘p
(many-to-many) aloqani ifodalaydi. 
o Talabalar bir nechta kursda ishtirok etishi mumkin, shuningdek, bitta
kursda bir nechta talaba bo‘lishi mumkin.
o TalabaKurs   oraliq   model   bo‘lib,   talabalar   va   kurslar   o‘rtasidagi
bog‘lanishni amalga oshiradi.
4. Foyda va qo‘llanilishi
 Talaba   modeli   talabalar   haqidagi   ma’lumotlarni   saqlash   va   boshqarish
uchun ishlatiladi.
 Kurslar   bilan   bog‘lanish   orqali   talabalar   qaysi   kurslarda   qatnashayotgani
yoki bir kursda qaysi talabalar borligini aniqlash osonlashadi.
5. Amaliyotda ishlatilishi
 Ma’lumotlar bazasi:  Ushbu model "Talabalar" jadvalini yaratadi.
 Ko‘pga-ko‘p aloqalar:  
o Talabalar va kurslar o‘rtasidagi bog‘lanish uchun oraliq model sifatida
TalabaKurs  ishlatiladi.
o Bu talabalar va kurslarni bir-biriga bog‘lash imkonini beradi.
 Masalan: 
var talabalar = context.Talabalar
    .Include(t => t.TalabaKurslari)
    .ThenInclude(tk => tk.Kurs)
.ToList();
Ushbu kod orqali talabaning ishtirok etayotgan barcha kurslarini olish mumkin.
11-rasm.   TalabaKurs classi.
Ushbu   kod   TalabaKurs   sinfi   uchun   yozilgan   bo‘lib,   u   talabalar   va   kurslar
o‘rtasidagi   ko‘pga-ko‘p (many-to-many)   aloqani ifodalaydi. Bundan tashqari, bu
aloqaga qo‘shimcha ma’lumot (masalan, baholar) kiritilgan. 
15 1. Umumiy maqsad
TalabaKurs   sinfi   talaba   va   kurs   o‘rtasidagi   bog‘lanishni   boshqarish   uchun
ishlatiladi. Bu sinf talabani qaysi kurslarda qatnashayotgani va ular uchun berilgan
baholarni saqlaydi.
2. Xususiyatlar (Properties)
a. TalabaKursId
public int TalabaKursId { get; set; }
 TalabaKursId  — birlamchi kalit (primary key).
 Turi:  int .
 Bu sinfdagi har bir yozuvni noyob tarzda aniqlash uchun ishlatiladi.
b. TalabaId
public int TalabaId { get; set; }
 TalabaId   — talaba bilan bog‘lanish uchun ishlatiladigan chet kalit (foreign
key).
 Turi:  int .
 Bu qiymat  Talaba  jadvalidagi yozuvni ifodalaydi.
c. Talaba
public Talaba Talaba { get; set; }
 Talaba  —  TalabaKurs  jadvali orqali talabaga bog‘lanishni ifodalaydi.
 Bu   navigation   property   bo‘lib,   talabaning   to‘liq   ma’lumotlarini   olish
imkonini beradi.
d. KursId
public int KursId { get; set; }
 KursId   —   kurs   bilan   bog‘lanish   uchun   ishlatiladigan   chet   kalit   (foreign
key).
 Turi:  int .
 Bu qiymat  Kurs  jadvalidagi yozuvni ifodalaydi.
e. Kurs
public Kurs Kurs { get; set; }
 Kurs  —  TalabaKurs  jadvali orqali kursga bog‘lanishni ifodalaydi.
 Bu   navigation   property   bo‘lib,   kursning   to‘liq   ma’lumotlarini   olish
imkonini beradi.
f. Baholar
public int Baholar { get; set; } // Kurs bo‘yicha talabaga berilgan baho
 Baholar  — kurs bo‘yicha talabaga berilgan bahoni saqlash uchun ishlatiladi.
 Turi:  int .
 Bu qo‘shimcha ustun bo‘lib, aloqaga maxsus ma’lumot qo‘shadi.
16 3. Aloqalar (Relationships)
 TalabaKurs  sinfi: 
o Talabalar   va   Kurslar   o‘rtasidagi   ko‘pga-ko‘p   aloqani   amalga
oshiradi.
o Har bir yozuvda bir talaba va bir kurs bilan bog‘lanish mavjud.
 Chet kalitlar:  
o TalabaId  →  Talaba  jadvali bilan bog‘langan.
o KursId  →  Kurs  jadvali bilan bog‘langan.
4. Foyda va qo‘llanilishi
TalabaKurs   modeli   talaba   va   kurslar   o‘rtasidagi   aloqani   boshqaradi   va
qo‘shimcha ma’lumot (masalan, baholar) saqlash imkonini beradi.
Amaliyotda ishlatilishi:
 Talabaning barcha kurslarini olish:  
var kurslar = context.TalabaKurslari
    .Where(tk => tk.TalabaId == talabaId)
    .Include(tk => tk.Kurs)
    .Select(tk => tk.Kurs)
     .ToList();
 Talabaga kurs bo‘yicha baho qo‘shish:  
context.TalabaKurslari.Add(new TalabaKurs
{
    TalabaId = talabaId,
    KursId = kursId,
    Baholar = 90
});
context.SaveChanges();
TalabaKurs  modeli talabalar va kurslar o‘rtasidagi munosabatni boshqarishda
markaziy   rol   o‘ynaydi.   Bu   orqali   talabaning   qaysi   kurslarda   qatnashayotganini
kuzatish va ularga berilgan baholarni saqlash osonlashadi.
17 Loyiha kontroller va ko‘rinishlarini yaratish
Kontroller   model   va   ko‘rinish   (view)   o‘rtasidagi   muloqotni   boshqaradi.   U
foydalanuvchi   so‘rovlarini   qabul   qiladi,   kerakli   ma’lumotlarni   modeldan  oladi   va
tegishli ko‘rinishni (view) qaytaradi.
12-rasm.  HomeController classi.
Asosiy tushunchalar:
 AppDbContext :   Bu   ma’lumotlar   bazasi   bilan   ishlash   uchun   ishlatiladigan
DbContext  sinfidan meros olgan konteyner sinfi bo‘lishi mumkin.
 Oqituvchilar :   Bu   ma’lumotlar   bazasida   mavjud   bo‘lgan   jadval   bo‘lib,
ehtimol o‘qituvchilarni ifodalaydi.
 View :   Har   bir   action   metodi   View()   metodini   qaytaradi,   bu   esa   tegishli
Razor   ko‘rinishiga   (masalan,   Home.cshtml ,   About.cshtml   va   hokazo)   mos
keladi.  Ko‘rinishlar foydalanuvchiga HTML shaklida chiqariladi.  [4]
Umumiy funksionallik:
 Ushbu   kontroller   veb-saytning   turli   sahifalarini   boshqaradi   ( Home ,   About ,
Courses ,  OurTeam ,  Contact ,  Testimonial , va  ErrorPage ).
 Ma’lumotlar   faqat   OurTeam()   metodida   olinadi,   bu   yerda   o‘qituvchilar
ro‘yxati ma’lumotlar bazasidan olinib, ko‘rinishga uzatiladi.
18 13-rasm.   Ko‘rinishlar yaratish.
Views   nomli papka yaratib, uning ichiga yana Home va Shared nomli papka
yaratamiz. Home papkasining ichiga o‘zimizning mavzuyimizga mos yuklab olgan
shablonimizdagi  cshtml fayl yaratamiz va uning ichiga shablondagi html teglari va
c# kodlarini kochirib qoyamiz.
1. Views papkasi :
o Bu   papka   barcha   sahifalar   (ko‘rinishlar)   joylashgan   joy.   Har   bir
kontroller uchun alohida papka yaratiladi.
2. Home papkasi :
o Bu   papka   HomeController   uchun   mo‘ljallangan.   Uning   ichida
kontrollerdagi   metodlarga   mos   keladigan   sahifalar   (.cshtml   fayllar)
joylashgan: 
 About.cshtml : About() metodi uchun ko‘rinish.
 Contact.cshtml : Contact() metodi uchun ko‘rinish.
 Courses.cshtml : Courses() metodi uchun ko‘rinish.
 ErrorPage.cshtml : ErrorPage() metodi uchun ko‘rinish.
 Home.cshtml : Home() metodi uchun asosiy sahifa ko‘rinishi.
 OurTeam.cshtml :   OurTeam()   metodi   uchun   sahifa,   bunda
o‘qituvchilar ro‘yxati ko‘rsatiladi.
 Testimonial.cshtml : Testimonial() metodi uchun sahifa.
3. Shared papkasi :
o Bu papkada umumiy ko‘rinishlar va konfiguratsiyalar saqlanadi: 
 _ViewImports.cshtml :   Umumiy   konfiguratsiya   fayli.   Bu
faylda   fayllar   uchun   qo‘shimcha   namespace   va   helper'lar
import qilinadi.
 _ViewStart.cshtml :   Har   bir   sahifa   yuklanganda   ishlaydigan
boshlang‘ich   konfiguratsiya   fayli.   Ko‘pincha   layout   fayli   shu
yerda belgilanadi. [4]
19 Umumiy ma’nosi :
 Har bir kontroller uchun alohida papka bo‘ladi (bu yerda Home papkasi).
 Har   bir   metodga   mos   .cshtml   fayl   tayyorlanadi,   ular   foydalanuvchiga
ko‘rsatiladi.
 Shared papkasi umumiy va qayta foydalaniladigan kodlar uchun ishlatiladi.
 Loyihani ishlatish va tekshirish
1. Migration va bazani yaratish:  Agar hali bazani yaratmagan bo‘lsangiz:
2. dotnet ef migrations add InitialCreate
3. dotnet ef database update  
4. Ilovani ishga tushirish:
o Visual Studio yoki terminal orqali ilovani ishga tushiring: 
o dotnet run  [2]
5. Talabalar ro‘yxatini ko‘rish:
o Brauzerda  /Talaba  URL-manziliga o‘ting.
o Talabalar ro‘yxatini va yangi talaba qo‘shish funksiyasini tekshiring.
Bu   kod   ASP.NET   MVC   ilovalarida   keng   tarqalgan   bir   tuzilma   bo‘lib,
kontroller   foydalanuvchi   so‘rovlarini   boshqaradi,   ma’lumotlarni   ma’lumotlar
bazasidan oladi va o‘sha ma’lumotlarni ko‘rinishga uzatadi. [3]
20 Loyihadan foydalanish bo‘yicha ko‘rsatma
Bu reja Project12 ASP.NET Core MVC ilovasi bilan ishlash uchun qo‘llanma
sifatida ishlab chiqilgan. Quyida loyiha tuzilmasi, asosiy imkoniyatlar va ishlatish
tartibi keltirilgan.
1. Loyihani ishga tushirish
1. Tizim talablarini tekshirish :
o .NET SDK : Loyihani ishga tushirish uchun tizimingizda .NET 6 yoki
undan yuqori versiyasi o‘rnatilgan bo‘lishi kerak. [ 1]
o Ma’lumotlar   bazasi :   AppDbContext   ma’lumotlar   bazasiga   ulanadi,
shuning   uchun   ma’lumotlar   bazasi   to‘g‘ri   sozlanganligiga   ishonch
hosil qiling. [1]
2. Loyihani yuklash :
o Loyihaning manba kodini yuklang va o‘zingizning ishchi papkangizga
oching.
3. Ishga tushirish :
o Terminal yoki Visual Studio orqali loyiha papkasiga o‘ting.
o Buyruq qatorida quyidagi komandalardan birini ishga tushiring:
o dotnet build   # Loyihani yig‘ish
dotnet run     # Loyihani ishga tushirish
Brauzerda   http://localhost:   7055   yoki   shunga   o‘xshash   manzil   orqali
ilovani oching.
2. Loyiha tuzilmasi
Loyihaning asosiy tuzilmasi quyidagicha:
 Controllers :
o HomeController  kontrolleri barcha sahifalarni boshqaradi.
o Metodlar va ularga mos bo‘lgan sahifalar:
 Home()  – Home sahifasi.
 About()  – About sahifasi.
 Courses()  – Kurslar haqida ma’lumot sahifasi.
 OurTeam()   –   Jamoa   sahifasi   (ma’lumotlar   bazasidan
o‘qituvchilar ro‘yxatini ko‘rsatadi).
 Contact()  – Kontakt sahifasi.
21  Testimonial()  – Fikr-mulohazalar sahifasi.
 ErrorPage()  – Xato sahifasi.  [3]
Views :
o Views/Home : Sahifalarning  .cshtml  fayllari shu yerda saqlanadi.
 Masalan:  Home.cshtml ,  About.cshtml  va boshqalar.  [ 1]
o Views/Shared : Umumiy fayllar:
 _ViewImports.cshtml : Namespace va helper’lar import qilinadi.
 _ViewStart.cshtml : Layout fayli belgilash uchun ishlatiladi.  [ 1]
 Models :
o AppDbContext : Ma’lumotlar bazasiga ulanish va ishlash uchun.
o Oqituvchilar : O‘qituvchilar ro‘yxatini saqlash uchun model. [7]
4. Funktsional imkoniyatlar
14 -rasm.   Home oynasining   ko‘ rinishi   .
1. Bosh sahifa (Home) :
o http://localhost:  7055 /Home
o Bu   sahifa   foydalanuvchini   kutib   oladi   va   asosiy   ma’lumotlarni
ko‘rsatadi.
22 15-rasm.  About oynas ning ko‘ rinishi.
2. Biz haqimizda (About) :
o http://localhost:  7055 /Home/About
o O‘quv markazi haqida qisqacha ma’lumot beradi.
16-rasm.  Courses oynas ning ko‘ rinishi.
3. Kurslar (Courses) :
o http://localhost:  7055 /Home/Courses
o Taqdim etilayotgan kurslar haqida ma’lumot beradi.
23 17-rasm.  Our Team oynas ning ko‘ rinishi.
4. Bizning jamoamiz (Our Team) :
o http://localhost:  7055 /Home/OurTeam
o Jamoa a’zolarining ro‘yxatini ko‘rsatadi.
o Ma’lumotlar  AppDbContext  orqali ma’lumotlar bazasidan olinadi.
18-rasm.  Contact oynas ning ko‘ rinishi.
5. Aloqa (Contact) :
o http://localhost:  7055 /Home/Contact
o Foydalanuvchilarga o‘quv markazi bilan bog‘lanish imkonini beradi.
24 19-rasm.  Testimonial oynas ning ko‘ rinishi.
6. Fikr-mulohazalar (Testimonial) :
o http://localhost:  7055 /Home/Testimonial
o Foydalanuvchilarning fikrlari va tajribalarini ko‘rsatadi.
20-rasm.  Error Page oynas ning ko‘ rinishi.
7. Xato sahifasi (Error Page) :
o http://localhost: 7055 /Home/ErrorPage
o Xato yoki noto‘g‘ri manzilga o‘tilganda ko‘rsatiladigan sahifa. [6]
4. Ma’lumotlar bazasi bilan ishlash
1. Ma’lumotlarni sozlash :
25 o AppDbContext   faylida   ma’lumotlar   bazasiga   ulanish   uchun
sozlamalar   mavjud.   Uni   appsettings.json   fayliga   mos   ravishda
sozlang.
2. Ma’lumotlarni yaratish :
o Ma’lumotlar bazasida o‘qituvchilar jadvalini yaratish uchun EF Core
migration’laridan foydalaning:
o dotnet ef migrations add InitialCreate
dotnet ef database update  [5]
3. Ma’lumotlar bilan ishlash :
o O‘qituvchilar   ro‘yxatini   yangilash   yoki   qo‘shish   uchun   Oqituvchilar
jadvalini to‘ldiring.
5. Loyihani moslashtirish
1. Dizaynni o‘zgartirish :
o Sahifalarning dizaynini o‘zgartirish uchun   Views   papkasidagi   .cshtml
fayllarni tahrir qiling.
2. Yangi sahifa qo‘shish :
o Kontrollerga yangi metod qo‘shing.
o Views  papkasida yangi  .cshtml  fayl yarating.
o URL yo‘lini mos ravishda sozlang. [4]
3. Layout faylini sozlash :
o Views/Shared/_Layout.cshtml   faylini   tahrir   qilib,   barcha   sahifalarga
umumiy qism (header, footer va boshqalar) qo‘shishingiz mumkin.
6. Test qilish
1. Brauzer   orqali   sahifalarni   birma-bir   ochib,   ularning   to‘g‘ri   ishlashini
tekshiring.
2. OurTeam   sahifasida   o‘qituvchilar   ro‘yxati   ko‘rinayotganiga   ishonch   hosil
qiling.
3. Xato sahifasi noto‘g‘ri URL manzilda ishlayotganini sinab ko‘ring. [8]
26 Xulosa
Ushbu loyiha zamonaviy va qulay veb-ilova yaratish uchun ishlab chiqilgan.
ASP.NET   Core   MVC   platformasi   yordamida   qurilgan   loyiha   foydalanuvchilarga
ma’lumotlarni tez va oson topishga yordam beradi.  Asosiy xususiyatlar:  1. Har bir
bo‘lim tartibli va foydalanuvchi uchun qulay qilib ishlangan. 2. Ma’lumotlar bazasi
bilan   samarali   integratsiya   qilingan.   3.   Kod   modulli   bo‘lib,   dasturchilar   uchun
kengaytirish va boshqarish oson.   Foydalari:   1. Veb-sahifalar oddiy va tushunarli
interfeysga   ega.   2.   Loyihani   kengaytirish   va   yangi   imkoniyatlar   qo‘shish   oson.
3. Ma’lumotlar bazasidagi o‘zgarishlarni tezkor amalga oshirish mumkin.  Mazkur
loyiha   dasturlashni   endi   o‘rganayotganlar   uchun   ham,   real   loyihalarda   ishlatish
uchun  ham   qulaydir.  Bu   loyiha   orqali   foydalanuvchilar   zamonaviy   veb-ilovalarni
yaratishda   tajriba   orttirib,   o‘z   bilimlarini   kengaytirishi   mumkin.   Shuningdek,   uni
boshqa   sohalar   uchun   moslashtirish   yoki   murakkab   funksiyalar   bilan   boyitish
imkoniyati ham mavjud .  Umuman olganda,  Project12  loyihasi oddiy, tushunarli va
27 samarali   y echimlarni   taklif   qiladi.   Ushbu   loyiha   dasturchilar   va   foydalanuvchilar
uchun   birdek   foydali   bo‘lib,   kelgusida   kengaytirish   va   rivojlantirish
imkoniyatlariga  ega.   Bu  loyiha  taqdim  etayotgan  qulaylik  va  imkoniyatlar   biznes
ehtiyojlarini qondirishda katta yordam beradi.
Foydalanilgan adabiyotlar
1. Marinko   Spasojevic,   Vladimir   Pecanac   –   Ultimate   ASP.NET   Core   Web
API(Second edition),  O‘Reilly Media, Inc.  2012-y, 176.
2. Julia Lerman - Programming Entity Framework: Code First,  O‘Reilly Media,
Inc. 2009-y, 832.
3. Jon   Duckett   -   HTML   and   CSS:   Design   and   Build   Websites,   John   Wiley   &
Sons, 2011-y,480.
4. Jon Skeet - C# in Depth,  Manning Publications, 2019-y, 728. 
5. Ricardo Peres - Mastering ASP.NET Core 6.0,  Packt Publishing, 2022-y, 750.
6. TutorialsPoint -  ASP.NET Core MVC Tutorial,   TutorialsPoint, 2021-y, 120.
7. DZone -  Introduction to MVC in ASP.NET Core  ,  DZone, 2020-y, 30.
8. Dev.to -  Common Problems in ASP.NET Core MVC,   Dev.to, 2019-y, 25.
28 29

MUNDARIJA

Kirish

Loyiha modelni shakllantirish

Loyiha kontroller va ko‘rinishlarini yaratish

Loyihadan foydalanish bo‘yicha ko‘rsatma

Xulosa

Foydalanilgan adabiyotlar