Инженерия факультеті



бет4/8
Дата28.06.2023
өлшемі0,94 Mb.
#103690
1   2   3   4   5   6   7   8
Байланысты:
Мағжан

1.3 Контроллерды іске қосу


Контроллерлар біздің үлгілердің барлығын қолдана отырып оларды көрініске жібереді. Бізде үлгілерді тауарлар ретінді қарастырамыз. Сондықтан олардын әр қайсысына жеке контроллер ашамыз. Тауарларды қосып, өшіріп және оларды өңдеу үшін қосамыз.





1.8 сурет. Пән контроллері.

1.8 суретте ұсынылған код сіздің веб-қосымшаңыздағы курстарға қатысты операцияларды басқаратын CoursesController контроллерін ұсынады. CoursesController контроллерінде келесі әрекет әдістері (actions)анықталған:





  • Index: дерекқордан барлық курстардың тізімін алады және оны Index көрінісіне жібереді.көрсету үшін cshtml.

  • Мәліметтер: белгілі бір курс туралы ақпаратты оның идентификаторы арқылы алады және оны мәліметтер көрінісіне жібереді.көрсету үшін cshtml.

  • Create: жаңа мәміле жасау үшін пішінді көрсетеді және populatedepartmentsdropdownlist () әдісімен филиалдардың ашылмалы тізімін толтырады.

  • Create( POST): жаңа мәміле жасау формасының деректерін қабылдайды және деректер жарамды болса, оны дерекқорға сақтайды. Валидация қатесі болған жағдайда, тиісті қателері бар құру нысанын қайтарады.

  • Edit: белгілі бір курс туралы ақпаратты оның идентификаторы арқылы алады және оны edit көрінісіне жібереді.курсты өңдеу формасын көрсету үшін cshtml. Сондай-ақ, populatedepartmentsdropdownlist () әдісі арқылы филиалдардың ашылмалы тізімін толтырады.

  • Edit (POST): курсты өңдеу формасының деректерін қабылдайды және деректер жарамды болса, дерекқордағы тиісті жазбаны жаңартады. Валидация қатесі немесе деректерді сақтау қатесі болған жағдайда, тиісті қателері бар редакциялау нысанын қайтарады.

  • Delete: белгілі бір курс туралы ақпаратты оның идентификаторы арқылы алады және оны delete көрінісіне жібереді.курсты жоюды Растауды көрсету үшін cshtml.

  • Delete( POST): таңдалған курсты дерекқордан жояды және пайдаланушыны Индекс бетіне бағыттайды.

  • UpdateCourseCredits: пайдаланушы барлық курстар үшін несие санын жаңарту үшін мультипликаторды көрсете алатын пішінді көрсетеді.

  • UpdateCourseCredits (POST): көрсетілген мультипликаторды қабылдайды және дерекқордағы барлық курстардың несие санын жаңарту үшін SQL сұрауын орындайды.

  • PopulateDepartmentsDropDownList: дерекқордағы деректерді пайдалана отырып, көріністердегі бөлімдердің ашылмалы тізімін толтырады.

  • CoursesController контроллері дерекқормен өзара әрекеттесу үшін SchoolContext пайдаланады. Барлық оқу және жазу операциялары Entity Framework Core (EF Core) көмегімен орындалады.

Контроллер веб-қосымшадағы курстарды көрсету, құру, өңдеу және жою, сондай-ақ курстық несиелер санын жаңарту үшін функционалдылықты қамтамасыз етеді.





1.9 сурет. Пән еңгізу контроллері.

1.9 суретте ұсынылған Create әдісінің кодында coursescontroller сыныбында нысанды жіберген кезде дерекқорда жаңа мәміле жасау жүзеге асырылады.


[Httppost] төлсипаты бұл әдіс post сұрау өңдеушісі екенін көрсетеді. [ValidateAntiForgeryToken] төлсипаты сайтаралық сұраныстардың жалған шабуылдарының алдын алу үшін пішін деректерінің түпнұсқалығын тексеруден өтуін қамтамасыз етеді.
Әдіс денесінде алдымен модельдің күйі тексеріледі (ModelState.Isvalid) үшін пайдаланушы енгізген деректердің барлық қажетті тексеру ережелерінен өткеніне көз жеткізіңіз. Егер деректер жарамды болса, онда жаңа Course нысаны дерекқор контекстіне қосылады (_context.Add (course)) және сақталады (await _context.SaveChangesAsync()). Егер деректер тексеруден өтпесе, онда populatedepartmentsdropdownlist(course) әдісі орындалады.Departmentid), ол пайдаланушы курс үшін дұрыс бөлімді таңдай алатындай бөлімдердің ашылмалы тізімін толтырады. Содан кейін view(course) көрінісі қайтарылады, онда тиісті валидация қателері бар курсты құру формасы көрсетіледі. Курсты сәтті құрған жағдайда, пайдаланушы барлық курстардың тізімі көрсетілетін Индекс бетіне қайта бағытталады. Бұл әдіс жаңа курсты құру үшін пішінді жіберуді өңдейді және модельдің күйіне байланысты тиісті әрекеттерді орындайды.
Edit әдісі курсты өңдеу формасын көрсету үшін GET сұрауын өңдейді. Ол курс идентификаторын (id) параметр ретінде қабылдайды. Егер id null болса, онда әдіс 404 қате бетін көрсету үшін NotFound() мәнін қайтарады. Содан кейін әдіс идентификаторды пайдаланып дерекқордан курс туралы ақпаратты алады және оны edit көрінісіне жібереді.View () әдісі арқылы cshtml. Филиалдардың ашылмалы тізімін толтыру үшін PopulateDepartmentsDropDownList () әдісі де орындалады.
EditPost әдісі курсты өңдеу формасын жібергеннен кейін post сұрауын өңдейді. Ол сонымен қатар курс идентификаторын (id) параметр ретінде қабылдайды. Егер id null болса, әдіс notfound () мәнін қайтарады. Содан кейін ол идентификатор бойынша дерекқордан курс алады және оны courseToUpdate айнымалысына сақтайды.
Tryupdatemodelasync әдісі өңдеу формасынан жіберілген мәліметтер негізінде courseToUpdate курсының қасиеттерін жаңартады. Бұл жағдайда тек Credits, DepartmentID және Title қасиеттерін жаңартуға болады, өйткені олар TryUpdateModelAsync параметрлері ретінде көрсетілген. Егер модельді жаңарту сәтті болса, _context көмегімен дерекқордағы өзгерістер сақталады.SaveChangesAsync () және пайдаланушы Индекс бетіне қайта бағытталады. Сақтау кезінде қате пайда болған жағдайда (DbUpdateException), modelstate көмегімен модельге валидация қатесі қосылады.AddModelError(). Егер модельді жаңарту сәтсіз болса, әдіс филиалдардың ашылмалы тізімін толтыру үшін PopulateDepartmentsDropDownList() әдісін орындайды, содан кейін курс деректерімен және сәйкес тексеру қателерімен View(courseToUpdate) көрінісін қайтарады.
Бұл әдістер пайдаланушыларға курсты өңдеуге, алдыңғы курс сипаттарының мәндерін редакциялау түрінде көрсетуге және дерекқордағы өзгерістерді сақтауға мүмкіндік береді.
Delete әдісі курсты жоюды Растауды көрсету үшін GET сұрауын өңдейді. Ол курс идентификаторын (id) параметр ретінде қабылдайды. Егер id null болса, онда әдіс 404 қате бетін көрсету үшін NotFound() мәнін қайтарады. Содан кейін әдіс дерекқордан курс туралы ақпаратты, соның ішінде филиал туралы байланысты ақпаратты алады және оны delete көрінісіне жібереді.View () әдісі арқылы cshtml.
DeleteConfirmed әдісі курстың жойылғанын растағаннан кейін POST сұрауын өңдейді. Ол курс идентификаторын (id) параметр ретінде қабылдайды. Алдымен әдіс FindAsync(id) әдісі арқылы дерекқордан курсты табады және оны course айнымалысында сақтайды. Содан кейін әдіс _context көмегімен дерекқор контекстінен курсты жояды.Courses.Remove(course).
Осыдан кейін _context әдісі шақырылады.Savechangesasync () дерекқордағы Өзгерістерді сақтау үшін. Содан кейін әдіс пайдаланушыны Redirecttoaction(nameof(Index)) көмегімен Index бетіне бағыттайды. Осылайша, пайдаланушы алдымен курсты жою туралы растауды алады, содан кейін расталғаннан кейін курс дерекқордан жойылады және пайдаланушы жойылғаннан кейін барлық курстардың тізімін көрсететін Индекс бетіне қайта бағытталады.
1.10 сурет. Жеке тауардың контроллері.

1.10 суретте Create әдісі қабылдау жазбасын жасау формасын көрсету үшін GET сұрауын өңдейді. Ол viewdata әдісі арқылы ашылмалы курстар тізімдері мен студенттер топтары үшін қажетті деректерді орнатады. Содан кейін әдіс create көрінісін қайтарады.cshtml, онда қабылдау жазбасын жасау формасы көрсетіледі. Create әдісі сонымен қатар қабылдау жазбасын жасау формасын жібергеннен кейін post сұрауын өңдейді. Ол Enrollment нысанын параметр ретінде қабылдайды. Егер осы нысандар тексеруден өткен болса (ModelState.IsValid), тіркеу жазбасы деректер базасының контекстіне қосылады (_context.Add (enrollment)) және өзгертулер сақталады (await _context.SaveChangesAsync()). Содан кейін пайдаланушы Index бетіне қайта бағытталады, онда барлық қабылдаулардың тізімі көрсетіледі. Егер пішін деректері валидация тексеруінен өтпесе, әдіс create көрінісін қайтарады.Enrollment нысаны бар cshtml және сәйкес тексеру қателері.


Edit әдісі қабылдау жазбасын өңдеу формасын көрсету үшін GET сұрауын өңдейді. Ол қабылдау жазбасының идентификаторын (id) параметр ретінде қабылдайды. Егер id null болса, онда әдіс 404 қате бетін көрсету үшін NotFound() мәнін қайтарады. Содан кейін әдіс FindAsync(id) көмегімен идентификатор дерекқорында тіркеу жазбасын табады және оны edit көрінісіне жібереді.View () әдісі арқылы cshtml. Әдіс сонымен қатар курстар мен студенттер топтарының ашылмалы тізімдері үшін деректерді орнатады.
Осылайша, Create және Edit әдістері пайдаланушыға студенттерді курстарға қабылдау туралы жазбаларды жасауға және өңдеуге мүмкіндік береді, сонымен қатар деректерді тексеруді және дерекқордағы өзгерістерді сақтауды қамтамасыз етеді.


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет