Uni quezes and about page almost finished
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,132 @@
|
||||
Kérdés: Miért van külön Web.Debug.config és Web.Release.config fájl a webalkalmazásban?
|
||||
Azért, mert így külön definiálhatóak beállítások éles és demo környezetekhez.
|
||||
!Azért, mert így külön definiálhatóak beállítások a SolutionConfiguration alatt választható build típusokhoz.
|
||||
Azért, mert így külön definiálhatóak változtatható a kinézetéles és demo környezetek között.
|
||||
|
||||
Kérdés: Web alkalmazásban adatbáziskapcsolat adatai hol tárolhatóak?
|
||||
ConfigurationSettings.cs fájlban
|
||||
!Web.config fájlban
|
||||
Global.asax fájlban
|
||||
|
||||
Kérdés: Web alkalmazásban mit tartalmaz a Global.asax.cs fájl?
|
||||
!Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot.
|
||||
Az egész alkalmazásból elérhető metódusokat.
|
||||
Globális változók definíciója
|
||||
|
||||
Kérdés: Web alkalmazásban mi a különbség valami.aspx, valami.aspx.cs és valami.aspx.designer.cs fájlok tartalma között?
|
||||
!Az aspx tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó codebehind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.designer.cs generált fájl, mely a vezérlők definícióját tartalmazza.
|
||||
Az .cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.designer.cs a hozzá tartozó codebehind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.csgenerált fájl, mely a vezérlők definícióját tartalmazza.
|
||||
Az aspx.designer.cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó codebehind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx generált fájl, mely a vezérlők definícióját tartalmazza.
|
||||
|
||||
Kérdés: Web alkalmazásban mit tartalmaz a Site.master fájl?
|
||||
Az oldal kerete, kinézete és működése, melyet az .cs fájlok töltenek meg tartalommal
|
||||
!Az oldal kerete, kinézete és működése, melyet az .aspx fájlok töltenek meg tartalommal
|
||||
Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot.
|
||||
Az egész alkalmazásból elérhető metódusokat.
|
||||
Globális változók definíciója
|
||||
|
||||
Kérdés: Web alkalmazásban lehet-e több site.master fájl?
|
||||
!Igen, lehet
|
||||
Nem, nem lehet.
|
||||
|
||||
Kérdés: Web alkalmazásban egy aspx fájlban a <%: %> jel található, mit jelent?
|
||||
A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt.
|
||||
!A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke.
|
||||
|
||||
Kérdés: Web alkalmazásban egy aspx fájlban a <% %> jel található, mit jelent?
|
||||
!A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt.
|
||||
A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke.
|
||||
|
||||
Kérdés: Web alkalmazásban(Web forms) mit értünk a codebehind fájl alatt?
|
||||
!Azt a .aspx.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.
|
||||
Azt a POCO .cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.
|
||||
Azt a .designer.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.
|
||||
|
||||
Kérdés: Web alkalmazásban (web forms) hogyan generáltatható egy vezérlőelem default eseménykezelője?
|
||||
!Dupla kattintás a vezérlőelemen
|
||||
!Properties panel, event gomb alapján a kiválasztott eseményen dupla kattintás
|
||||
Tools menü, events... és ott kiválasztható 'adddefault'
|
||||
|
||||
Kérdés: Web alkalmazásban (web forms) válassza ki,melyek a választható/használható vezérlő elemek?
|
||||
Clock
|
||||
!Button
|
||||
!Textbox
|
||||
!DropdownList
|
||||
!Checkbox
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) mit tudhatunk meg az IsPostBacktulajdonsából?
|
||||
!Értéke hamis, ha ez az első oldalbetöltés.
|
||||
Értéke hamis, ha az oldalbetöltés vezérlés hatására történt
|
||||
|
||||
Kérdés: Web alkalmazásban DropdownList vezérlőhöz hogyan tudunk elemeket hozzáadni?
|
||||
!Példány.Itemskollekció manipulálásával
|
||||
Példány.Selectionkollekció manipulálásával
|
||||
Példány.CustomElementskollekció manipulálásával
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) egy Label típusú vezérlőelemen megjelenő szöveg melyik tulajdonsággal állítható be?
|
||||
Példány.Label
|
||||
Példány.Caption
|
||||
!Példány.Text
|
||||
Példány.ShowText()
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú vezérlőelembe user által írt szöveg melyik tulajdonsággal olvasható ki?
|
||||
Példány.Label
|
||||
Példány.Caption
|
||||
!Példány.Text
|
||||
Példány.ShowText()
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú melyik tulajdonsággal tiltható le (user nem szerkesztheti)?
|
||||
Disabled tulajdonság true értékre állításával
|
||||
!Enabled tulajdonság false értékre állításával
|
||||
Visible tulajdonság false értékre állításával
|
||||
Opacity tulajdonság 0 értékre állításával
|
||||
|
||||
|
||||
Kérdés: Web alkalmazásban (web forms) egy TextBox típusú vezérlőben hogyan tudunk több sornyi szöveget megjeleníteni?
|
||||
Nem lehetséges, alapvetően userinput-ra való
|
||||
Text tulajdonságba sortöréssel ellátott szöveget helyezünk, EnableMultiLine tulajdonságot true értékre állítva
|
||||
!Text tulajdonságba sortöréssel ellátott szöveget helyezünk, TextMode tulajdonságot MultiLine értékre állítva
|
||||
|
||||
Kérdés: MVC projekt esetén tipikusan hova futnak be a browser kérései?
|
||||
Controller osztályok ActionResult attribútummal ellátott metóduasihoz.
|
||||
!Controller osztályok publikus metódusaihoz.
|
||||
Manager osztályok publikus metódusaihoz.
|
||||
|
||||
Kérdés: Mi határozza meg, hogy a browser címsorában lévő uri hova mutat az alkalmazásban?
|
||||
Controllerek publikus metódusaihoz futnak be.
|
||||
!Routing szabályokkal kell megadni.
|
||||
A Contextben kell megadni.
|
||||
|
||||
Kérdés: MVC projekt esetén tipikusan mit értünk ViewModel alatt?
|
||||
!Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket.
|
||||
Azon osztályok ezek, melyek az adatbázisban kerülnek perzisztálásra.
|
||||
Egy View alapját szolgáltató osztály, mely tipikusan nem tartalmaz számított mezőket és lekérdezett értékeket.
|
||||
|
||||
Kérdés: Mire utal az MVC minta?
|
||||
!Model-View-Controller
|
||||
Model-ViewModel-Control
|
||||
|
||||
Kérdés: MVC Web alkalmazásban hogyan kerül egy View megjelenítésre?
|
||||
A megadott URL egy HTML oldalra mutat, melyet a browser megjelenít, ez a View.
|
||||
!A megadott URL egy Controller metódusra mutat, mely View-t adhat vissza.
|
||||
ViewModel generálódik és jeleníti meg a browser.
|
||||
|
||||
Kérdés: MVC alkalmazás esetén mikor fog kiértékelődni a <%%> jelek közötti kifejezés?
|
||||
Csak az első megjelenítés során
|
||||
!Az oldal minden elkészítése során
|
||||
Az oldal minden elkészítése során, ami nem IsPostBack
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Scripts mappában?
|
||||
SQL script fájlok
|
||||
!Javascript fájlok
|
||||
.cs fájlok
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Styles mappában?
|
||||
!CSS fájlok
|
||||
Aspx fájlok
|
||||
Ascx fájlok
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált App_Data mappában?
|
||||
Metadata fájlok (.cs)
|
||||
!Helyi adatbázis fájlok
|
||||
Konfigurációs fájlok
|
@ -0,0 +1,131 @@
|
||||
Kérdés: Miért van külön Web.Debug.config és Web.Release.config fájl a webalkalmazásban?
|
||||
Azért, mert így külön definiálhatóak beállítások éles és demo környezetekhez.
|
||||
!Azért, mert így külön definiálhatóak beállítások a Solution Configuration alatt választható build típusokhoz.
|
||||
Azért, mert így külön definiálhatóak változtatható a kinézet éles és demo környezetek között.
|
||||
|
||||
Kérdés: Web alkalmazásban adatbáziskapcsolat adatai hol tárolhatóak?
|
||||
ConfigurationSettings.cs fájlban
|
||||
!Web.config fájlban
|
||||
Global.asax fájlban
|
||||
|
||||
Kérdés: Web alkalmazásban mit tartalmaz a Global.asax.cs fájl?
|
||||
!Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot.
|
||||
Az egész alkalmazásból elérhető metódusokat.
|
||||
Globális változók definíciója
|
||||
|
||||
Kérdés: Web alkalmazásban mi a különbség valami.aspx, valami.aspx.cs és valami.aspx.designer.cs fájlok tartalma között?
|
||||
!Az aspx tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó code behind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.designer.cs generált fájl, mely a vezérlők definícióját tartalmazza.
|
||||
Az .cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.designer.cs a hozzá tartozó code behind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx.cs generált fájl, mely a vezérlők definícióját tartalmazza.
|
||||
Az aspx.designer.cs tartalmazza a vezérlőelemek elhelyezkedését, típusát és alapvelő működését, az aspx.cs a hozzá tartozó code behind fájl (főként vezérlőelemek kezelésére vonatkozó kóddal), míg az aspx generált fájl, mely a vezérlők definícióját tartalmazza.
|
||||
|
||||
Kérdés: Web alkalmazásban mit tartalmaz a Site.master fájl?
|
||||
Az oldal kerete, kinézete és működése, melyet az .cs fájlok töltenek meg tartalommal
|
||||
!Az oldal kerete, kinézete és működése, melyet az .aspx fájlok töltenek meg tartalommal
|
||||
Az egész alkalmazás működését érintő események bekövetkezésekor végrehajtandó kódot.
|
||||
Az egész alkalmazásból elérhető metódusokat.
|
||||
Globális változók definíciója
|
||||
|
||||
Kérdés: Web alkalmazásban lehet-e több site.master fájl?
|
||||
!Igen, lehet
|
||||
Nem, nem lehet.
|
||||
|
||||
Kérdés: Web alkalmazásban egy aspx fájlban a <%: %> jel található, mit jelent?
|
||||
A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt.
|
||||
!A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke.
|
||||
|
||||
Kérdés: Web alkalmazásban egy aspx fájlban a <% %> jel található, mit jelent?
|
||||
!A végleges, browsernek küldött html tartalom előállítása során c# nyelven kell értelmezni a jelek közötti részt.
|
||||
A végleges, browsernek küldött html tartalomban jelenjen meg a jelek között található kifejezés értéke.
|
||||
|
||||
Kérdés: Web alkalmazásban(Web forms) mit értünk a code behind fájl alatt?
|
||||
!Azt a .aspx.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.
|
||||
Azt a POCO .cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.
|
||||
Azt a .designer.cs fájlt, mely az aspx fájllal összhangban tartalmazza többek között az események kezelőit.
|
||||
|
||||
Kérdés: Web alkalmazásban (web forms) hogyan generáltatható egy vezérlőelem default eseménykezelője?
|
||||
!Dupla kattintás a vezérlőelemen
|
||||
!Properties panel, event gomb alapján a kiválasztott eseményen dupla kattintás
|
||||
Tools menü, events… és ott kiválasztható ’add default’
|
||||
|
||||
Kérdés: Web alkalmazásban (web forms) válassza ki,melyek a választható/használható vezérlő elemek?
|
||||
Clock
|
||||
!Button
|
||||
!Textbox
|
||||
!DropdownList
|
||||
!Checkbox
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) mit tudhatunk meg az IsPostBack tulajdonsából?
|
||||
!Értéke hamis, ha ez az első oldalbetöltés.
|
||||
Értéke hamis, ha az oldalbetöltés vezérlés hatására történt
|
||||
|
||||
Kérdés: Web alkalmazásban DropdownList vezérlőhöz hogyan tudunk elemeket hozzáadni?
|
||||
!Példány.Items kollekció manipulálásával
|
||||
Példány.Selection kollekció manipulálásával
|
||||
Példány.CustomElements kollekció manipulálásával
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) egy Label típusú vezérlőelemen megjelenő szöveg melyik tulajdonsággal állítható be?
|
||||
Példány.Label
|
||||
Példány.Caption
|
||||
!Példány.Text
|
||||
Példány.ShowText()
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú vezérlőelembe user által írt szöveg melyik tulajdonsággal olvasható ki?
|
||||
Példány.Label
|
||||
Példány.Caption
|
||||
!Példány.Text
|
||||
Példány.ShowText()
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) egy Textbox típusú melyik tulajdonsággal tiltható le (user nem szerkesztheti)?
|
||||
Disabled tulajdonság true értékre állításával
|
||||
!Enabled tulajdonság false értékre állításával
|
||||
Visible tulajdonság false értékre állításával
|
||||
Opacity tulajdonság 0 értékre állításával
|
||||
|
||||
Kérdés: Web alkalmazásban (web forms) egy TextBox típusú vezérlőben hogyan tudunk több sornyi szöveget megjeleníteni?
|
||||
Nem lehetséges, alapvetően user input-ra való
|
||||
Text tulajdonságba sortöréssel ellátott szöveget helyezünk, EnableMultiLine tulajdonságot true értékre állítva
|
||||
!Text tulajdonságba sortöréssel ellátott szöveget helyezünk, TextMode tulajdonságot MultiLine értékre állítva
|
||||
|
||||
Kérdés:MVC projekt esetén tipikusan hova futnak be a browser kérései?
|
||||
Controller osztályok ActionResult attribútummal ellátott metóduasihoz.
|
||||
!Controller osztályok publikus metódusaihoz.
|
||||
Manager osztályok publikus metódusaihoz.
|
||||
|
||||
Kérdés: Mi határozza meg, hogy a browser címsorában lévő uri hova mutat az alkalmazásban?
|
||||
Controllerek publikus metódusaihoz futnak be.
|
||||
!Routing szabályokkal kell megadni.
|
||||
A Contextben kell megadni.
|
||||
|
||||
Kérdés: MVC projekt esetén tipikusan mit értünk ViewModel alatt?
|
||||
!Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket.
|
||||
Azon osztályok ezek, melyek az adatbázisban kerülnek perzisztálásra.
|
||||
Egy View alapját szolgáltató osztály, mely tipikusan nem tartalmaz számított mezőket és lekérdezett értékeket.
|
||||
|
||||
Kérdés: Mire utal az MVC minta?
|
||||
!Model-View-Controller
|
||||
Model-ViewModel-Control
|
||||
|
||||
Kérdés: MVC Web alkalmazásban hogyan kerül egy View megjelenítésre?
|
||||
A megadott URL egy HTML oldalra mutat, melyet a browser megjelenít, ez a View.
|
||||
!A megadott URL egy Controller metódusra mutat, mely View-t adhat vissza.
|
||||
ViewModel generálódik és jeleníti meg a browser.
|
||||
|
||||
Kérdés: MVC alkalmazás esetén mikor fog kiértékelődni a <%%> jelek közötti kifejezés?
|
||||
Csak az első megjelenítés során
|
||||
!Az oldal minden elkészítése során
|
||||
Az oldal minden elkészítése során, ami nem IsPostBack
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Scripts mappában?
|
||||
SQL script fájlok
|
||||
!Javascript fájlok
|
||||
.cs fájlok
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált Styles mappában?
|
||||
!CSS fájlok
|
||||
Aspx fájlok
|
||||
Ascx fájlok
|
||||
|
||||
Kérdés: Web alkalmazásban (Web forms) tipikusan milyen típusú fájlok lehetnek az előre definiált App_Data mappában?
|
||||
Metadata fájlok (.cs)
|
||||
!Helyi adatbázis fájlok
|
||||
Konfigurációs fájlok
|
@ -0,0 +1,84 @@
|
||||
Kérdés: MVC projekt esetén tipikusan mit értünk ViewModel alatt?
|
||||
!Egy View alapját szolgáltató osztály, mely tipikusan tartalmaz számított mezőket és lekérdezett értékeket.
|
||||
Azon osztályok ezek, melyek az adatbázisban kerülnek perzisztálásra.
|
||||
Egy View alapját szolgáltató osztály, mely tipikusan nem tartalmaz számított mezőket és lekérdezett értékeket.
|
||||
|
||||
Kérdés: Tipikusan mit értünk Context alatt?
|
||||
Minden ide tartozik, ami a Model osztályokban van.
|
||||
Minden ide tartozik, mely megmondja, hogy hol és milyen adatok érhetőek el.
|
||||
!Minden ide tartozik, amely a tárolt adatokat írja le (tulajdonságok, kapcsolatok).
|
||||
|
||||
Kérdés: MVC projektben, adatkezeléssel kapcsolatban, miért/mikor előnyös Initializer használata?
|
||||
Mert így minden Model osztályból tábla készíthető, egy lépésben.
|
||||
!Mert így nem kell újra felvinni teszt adatokat fejlesztés közben, amikor intenzíven változik a db séma.
|
||||
Mert így minden változás a sémában automatikusan rögzítve lesz.
|
||||
|
||||
Kérdés: Entity Framework – mit jelent a Table-per-hierarchy pattern használata/mit eredményez?
|
||||
Minden keletkezett táblában benne lesz az összes tulajdonság, ami csak felmerül a Context-ben, így gyorsul a hozzáférés.
|
||||
!Minden öröklődési hierarchiához egy tábla készül az ős nevével, mely minden leszármazott tulajdonságot és Discriminatort tartalmaz.
|
||||
Annyi tábla keletkezik belső hivatkozásokkal, ahány osztály részt vesz az öröklésben.
|
||||
|
||||
Kérdés: Entity Framework – mit jelent a Table-per-type pattern használata/mit eredményez?
|
||||
!Annyi tábla keletkezik belső hivatkozásokkal, ahány osztály részt vesz az öröklésben.
|
||||
Minden öröklődési hierarchiához egy tábla készül az ős nevével, mely minden leszármazott tulajdonságot és Discriminatort tartalmaz.
|
||||
Minden keletkezett táblában benne lesz az összes tulajdonság, ami csak felmerül a Context-ben, így gyorsul a hozzáférés.
|
||||
|
||||
Kérdés: Entity Framework – konkurencia kezelésére melyek a lehetséges módok?
|
||||
Contextben lock segítségével.
|
||||
!Timestamp/RowVersion használata.
|
||||
!Where feltételben az összes tulajdonság megjelenítése.
|
||||
|
||||
Kérdés: MVC projekt esetén mire való a MasterPage?
|
||||
Ez tipikusan a nyitóoldal.
|
||||
Ez tipikusan a kezdőoldal.
|
||||
!Ez adhatja a keretet, melyben a tartalom megjelenhet.
|
||||
|
||||
Kérdés: MVC projekt esetén mire használható a ViewBag?
|
||||
!Egy View kollekciót lehet segítsségével megjeleníteni, akár egyszerre több controllerből is.
|
||||
Olyan objektum, melynek nincsenek előre definiált tulajdonságai, kétirányban bármi bele tehető.
|
||||
View-kat lehet controllerekhez küldeni vele.
|
||||
|
||||
Kérdés: Entity Framework – tipikusan milyen típusú elemekből lesznek táblák?
|
||||
ViewModelekből, ez attributummal jelezhető.
|
||||
!Model folder POCO osztályaiból.
|
||||
Controller metódusok ActionResult visszatérésű elemeiből.
|
||||
|
||||
Kérdés: Entity Framework – Ha tulajdonságként 1:N kapcsolat megvalósítása a cél, akkor…
|
||||
…generikus IDictionary interfészt megvalósító tulajdonság kell.
|
||||
…IList<long> tulajdonság kell az idegen kulcs miatt.
|
||||
!…generikus ICollection interfészt megvalósító tulajdonság kell.
|
||||
|
||||
Kérdés: Entity Framework – Ha tulajdonságként 1:1 kapcsolat megvalósítása a cél, akkor…
|
||||
…protected property kell, olyan típussal, ami a hivatkozott elem típusa.
|
||||
…virtual property kell, olyan típussal, ami a másik elem típusa.
|
||||
!…publikus property get részében kell lekérdezni ID alapján és visszaadni.
|
||||
|
||||
Kérdés: Entity Framework – mivel szabályozható, hogy mely osztályokból készüljön tábla?
|
||||
Ezt Context generikus DbSet tulajdonságai határozzák meg.
|
||||
Web.config fájl ConnectionStrings részében kell megadni.
|
||||
!A model osztályok atributumai határozzák meg.
|
||||
|
||||
Kérdés: Entity Framework – hogyan állíthatjuk be az adatok inicializálását?
|
||||
Initializer osztály kell / Initialize() metódus felülbírálatával.
|
||||
Az Application_Start() metódus való erre.
|
||||
!Initializer osztály kell / Seed metódus override.
|
||||
|
||||
Kérdés: MVC projekt esetén tipikusan hova futnak be a browser kérései?
|
||||
Controller osztályok ActionResult attribútummal ellátott metódusaihoz.
|
||||
!Controller osztályok publikus metódusaihoz.
|
||||
Manager osztályok publikus metódusaihoz.
|
||||
|
||||
Kérdés: Mi határozza meg, hogy a browser címsorában lévő URI hova mutat az alkalmazásban?
|
||||
Controllerek publikus metódusaihoz futnak be.
|
||||
!Routing szabályokkal kell megadni.
|
||||
A Contextben kell megadni.
|
||||
|
||||
Kérdés: MVC - Hogyan tud egy View értékeket visszaadni egy Controllernek?
|
||||
!FormCollection segítségével.
|
||||
QueryString segítségével.
|
||||
ViewModel postolásával.
|
||||
|
||||
Kérdés: Miért előnyös az IQueryable interfész használata?
|
||||
Mert így az adatbázisba nem kell külön elmenteni az adatokat, ez azonnal megtörténik.
|
||||
!Mert Query Object pattern megvalósítás miatt, csak a lekérdezést tárolja, késői kiértékelés lehetséges.
|
||||
Mert így azonnal rendelkezésre áll az egész halmaz, igaz több adat kerülhet átvitelre.
|
@ -0,0 +1,130 @@
|
||||
from flask import Flask, render_template, request, redirect, url_for, session, Blueprint
|
||||
import os
|
||||
import random
|
||||
|
||||
# List of text files with questions
|
||||
TEXTFILES = ["./templates/uni/subjects/portalfejlesztes_net_ben/kerdessor1_manual.txt", "./templates/uni/subjects/portalfejlesztes_net_ben/kerdessor2_manual.txt", "./templates/uni/subjects/portalfejlesztes_net_ben/kerdessor3.txt"]
|
||||
|
||||
# Define Blueprint for the portalfejlesztes quiz
|
||||
portalfejlesztes_net_ben = Blueprint(
|
||||
'portalfejlesztes_net_ben',
|
||||
__name__,
|
||||
template_folder='./templates'
|
||||
)
|
||||
|
||||
|
||||
# Parse the questions from text files
|
||||
def parse_questions():
|
||||
content = []
|
||||
for file_path in TEXTFILES:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
content.extend(file.read().split("\n\n"))
|
||||
|
||||
questions = []
|
||||
|
||||
for block in content:
|
||||
lines = block.strip().split("\n")
|
||||
question = lines[0].replace("Kérdés: ", "").strip()
|
||||
answers = []
|
||||
correct_answers = []
|
||||
|
||||
for line in lines[1:]:
|
||||
answer = line.strip()
|
||||
if answer.startswith('!'):
|
||||
correct_answers.append(answer[1:].strip())
|
||||
else:
|
||||
answers.append(answer)
|
||||
|
||||
if correct_answers:
|
||||
questions.append({
|
||||
'question': question,
|
||||
'answers': answers + correct_answers,
|
||||
'correct_answers': correct_answers
|
||||
})
|
||||
|
||||
return questions
|
||||
|
||||
# Quiz route
|
||||
@portalfejlesztes_net_ben.route('/')
|
||||
@portalfejlesztes_net_ben.route('/quiz', methods=['GET', 'POST'])
|
||||
def quiz():
|
||||
# If questions are not in session, parse and store them
|
||||
if 'quiz_questions' not in session:
|
||||
questions = parse_questions()
|
||||
quiz_questions = random.sample(questions, 20)
|
||||
session['quiz_questions'] = quiz_questions
|
||||
session['question_index'] = 0
|
||||
session['answers'] = []
|
||||
else:
|
||||
quiz_questions = session['quiz_questions']
|
||||
|
||||
question_index = session.get('question_index', 0)
|
||||
|
||||
# If all questions have been answered, redirect to results
|
||||
if question_index >= len(quiz_questions):
|
||||
return redirect(url_for('portalfejlesztes_net_ben.result'))
|
||||
|
||||
current_question = quiz_questions[question_index]
|
||||
random.shuffle(current_question['answers']) # Shuffle the answers
|
||||
|
||||
return render_template('quiz.html', question=current_question, question_index=question_index)
|
||||
|
||||
# Submit answer route
|
||||
@portalfejlesztes_net_ben.route('/submit_answer', methods=['POST'])
|
||||
def submit_answer():
|
||||
user_answers = request.form.getlist('answer') # Get multiple answers if needed
|
||||
question_index = int(request.form.get('question_index'))
|
||||
|
||||
# Append answers to the session
|
||||
answers = session.get('answers', [])
|
||||
answers.append(user_answers)
|
||||
session['answers'] = answers
|
||||
|
||||
# Update the question index
|
||||
question_index += 1
|
||||
session['question_index'] = question_index
|
||||
|
||||
return redirect(url_for('portalfejlesztes_net_ben.quiz'))
|
||||
|
||||
# Result route
|
||||
@portalfejlesztes_net_ben.route('/result')
|
||||
def result():
|
||||
quiz_questions = session.get('quiz_questions', None)
|
||||
answers = session.get('answers', None)
|
||||
|
||||
score = 0
|
||||
mistakes = []
|
||||
|
||||
# Compare answers
|
||||
for i, user_answer in enumerate(answers):
|
||||
correct_answers = quiz_questions[i]['correct_answers']
|
||||
|
||||
# If the user's answer matches the correct answer
|
||||
if set(user_answer) == set(correct_answers):
|
||||
score += 1
|
||||
else:
|
||||
mistakes.append({
|
||||
'question': quiz_questions[i]['question'],
|
||||
'correct_answer': correct_answers,
|
||||
'user_answer': user_answer
|
||||
})
|
||||
|
||||
questions_with_answers = zip(quiz_questions, answers)
|
||||
|
||||
return render_template('result.html', score=score, total=len(quiz_questions), mistakes=mistakes, questions_with_answers=questions_with_answers)
|
||||
|
||||
# Restart route
|
||||
@portalfejlesztes_net_ben.route('/restart')
|
||||
def restart():
|
||||
session.pop('question_index', None)
|
||||
session.pop('answers', None)
|
||||
session.pop('quiz_questions', None)
|
||||
|
||||
return redirect(url_for('portalfejlesztes_net_ben.quiz'))
|
||||
|
||||
# All questions route (show all questions)
|
||||
@portalfejlesztes_net_ben.route('/allquestions')
|
||||
def allquestions():
|
||||
questions = parse_questions()
|
||||
|
||||
return render_template('allquestions.html', questions=questions)
|
@ -0,0 +1,167 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Portálfejlesztés .Net Quiz All</title>
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename='images/home/logo.jpg') }}" type="image/x-icon">
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
background: linear-gradient(to right, #5a0fb8, #1f65d6);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.container {
|
||||
background-color: #ffffff;
|
||||
width: 90%;
|
||||
max-width: 1200px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
height: fit-content;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
color: #00ff08;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 20px;
|
||||
font-size: 1.5em;
|
||||
color: #e5e5e5;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.1em;
|
||||
color: #dcdcdc;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
li {
|
||||
background: linear-gradient(to right, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.7));
|
||||
padding: 15px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
||||
margin-bottom: 12px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
li strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.correct-answer {
|
||||
color: #4CAF50;
|
||||
}
|
||||
|
||||
.user-answer {
|
||||
color: #FF5722;
|
||||
}
|
||||
|
||||
.mistake-item {
|
||||
background-color: #ff6c82;
|
||||
border: 1px solid #ff1e35;
|
||||
}
|
||||
|
||||
.no-mistakes {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
color: #4CAF50;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
padding: 10px 20px;
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: #45a049;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 20px;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.action-button {
|
||||
padding: 12px 20px;
|
||||
background-color: #3498db;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
font-size: 1.2em;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
transition: background-color 0.3s ease, transform 0.2s ease;
|
||||
width: 48%;
|
||||
}
|
||||
|
||||
.action-button:hover {
|
||||
background-color: #2980b9;
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.action-button:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.restart-button {
|
||||
background: linear-gradient(to right, #80e27e, #66c466);
|
||||
}
|
||||
|
||||
.exit-button {
|
||||
background: linear-gradient(to right, #ff8a80, #ff5252);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Programozás .Net ben</h1>
|
||||
|
||||
<p>Here are all the questions that will appear in the quiz!</p>
|
||||
|
||||
<ul>
|
||||
{% for question in questions %}
|
||||
<li>
|
||||
<strong>{{ question['question'] }}</strong><br>
|
||||
{% for correct in question['correct_answers'] %}
|
||||
<p>{{ correct }}</p>
|
||||
{% endfor %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<div class="button-container">
|
||||
<a href="{{ url_for('uni') }}" class="action-button">Exit to Home</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,137 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Portalfejlesztes .Net ben Quiz</title>
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename='images/home/logo.jpg') }}" type="image/x-icon">
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
background: linear-gradient(to right, #5a0fb8, #1f65d6);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.container {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
|
||||
flex: 1 1 calc(33.333% - 20px);
|
||||
max-width: calc(33.333% - 20px);
|
||||
transform: scale(1);
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
font-size: 2.2em;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.question {
|
||||
margin-bottom: 20px;
|
||||
font-size: 1.3em;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.answer-options {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.answer-options label {
|
||||
display: block;
|
||||
position: relative;
|
||||
background: linear-gradient(to right, #5a0fb8, #1f65d6);
|
||||
padding: 10px 15px;
|
||||
margin-bottom: 10px;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.answer-options label:hover {
|
||||
background: linear-gradient(to right, #1f65d6, #5a0fb8);
|
||||
color: white;
|
||||
transform: translateX(5px);
|
||||
}
|
||||
|
||||
.answer-options input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.answer-options input:checked + label {
|
||||
background: linear-gradient(to right, #5a0fb8, #2ecc71);
|
||||
color: white;
|
||||
border: 2px solid #27ae60;
|
||||
}
|
||||
|
||||
.submit-button, .quit-button {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
font-size: 1.2em;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
transition: background-color 0.3s ease, transform 0.2s ease;
|
||||
margin-top: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.submit-button {
|
||||
background: linear-gradient(to right, #80e27e, #66c466);
|
||||
}
|
||||
|
||||
.quit-button {
|
||||
background: linear-gradient(to right, #ff8a80, #ff5252);
|
||||
}
|
||||
|
||||
.submit-button:hover, .quit-button:hover {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.submit-button:active, .quit-button:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.submit-button:hover, .quit-button:hover {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.submit-button:active, .quit-button:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Question {{ question_index + 1 }} / 20</h1>
|
||||
<p class="question">{{ question['question'] }}</p>
|
||||
<form method="POST" action="{{ url_for('portalfejlesztes_net_ben.submit_answer') }}">
|
||||
<div class="answer-options">
|
||||
{% for answer in question['answers'] %}
|
||||
<input type="checkbox" id="answer_{{ loop.index }}" name="answer" value="{{ answer }}">
|
||||
<label for="answer_{{ loop.index }}">
|
||||
{{ answer }}
|
||||
</label>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<input type="hidden" name="question_index" value="{{ question_index }}">
|
||||
<input type="submit" value="Next" class="submit-button">
|
||||
</form>
|
||||
<form method="GET" action="{{ url_for('portalfejlesztes_net_ben.result') }}">
|
||||
<button type="submit" class="submit-button quit-button">Quit</button>
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,180 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Portálfejlesztés .Net ben Quiz Results</title>
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename='images/home/logo.jpg') }}" type="image/x-icon">
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
background: linear-gradient(to right, #5a0fb8, #1f65d6);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.container {
|
||||
background-color: #ffffff;
|
||||
width: 90%;
|
||||
max-width: 1200px;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
height: fit-content;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
color: #00ff08;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 20px;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
background: linear-gradient(to right, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.7));
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
|
||||
margin-bottom: 10px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
li strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.correct-answer {
|
||||
color: #4CAF50;
|
||||
}
|
||||
|
||||
.user-answer {
|
||||
color: #FF5722;
|
||||
}
|
||||
|
||||
.mistake-item {
|
||||
background-color: #ff6c82;
|
||||
border: 1px solid #ff1e35;
|
||||
}
|
||||
|
||||
.no-mistakes {
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
color: #4CAF50;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
padding: 10px 20px;
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: #45a049;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 20px;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.action-button {
|
||||
padding: 12px 20px;
|
||||
background-color: #3498db;
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
font-size: 1.2em;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
transition: background-color 0.3s ease, transform 0.2s ease;
|
||||
width: 48%;
|
||||
}
|
||||
|
||||
.action-button:hover {
|
||||
background-color: #2980b9;
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.action-button:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.restart-button {
|
||||
background: linear-gradient(to right, #80e27e, #66c466);
|
||||
}
|
||||
|
||||
.exit-button {
|
||||
background: linear-gradient(to right, #ff8a80, #ff5252);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Quiz Results</h1>
|
||||
|
||||
<p><strong>Score:</strong> {{ score }} out of {{ total }}</p>
|
||||
|
||||
<h2>Mistakes</h2>
|
||||
{% if mistakes %}
|
||||
<ul>
|
||||
{% for mistake in mistakes %}
|
||||
<li class="mistake-item">
|
||||
<strong>Question:</strong> {{ mistake.question }}<br>
|
||||
<strong class="user-answer">Your Answer:</strong> {{ mistake.user_answer }}<br>
|
||||
<strong class="correct-answer">Correct Answer:</strong> {{ mistake.correct_answer }}<br>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<p class="no-mistakes">No mistakes!</p>
|
||||
{% endif %}
|
||||
|
||||
<h2>All Answers</h2>
|
||||
<ul>
|
||||
{% for question, answer in questions_with_answers %}
|
||||
<li>
|
||||
<strong>{{ question['question'] }}</strong><br>
|
||||
<strong class="user-answer">Your Answer:</strong> {{ answer }}<br>
|
||||
<strong class="correct-answer">Correct Answer:</strong> {{ question['correct_answers'] }}<br>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<div class="button-container">
|
||||
<a href="{{ url_for('uni') }}" class="exit-button action-button">Exit to Home</a>
|
||||
<a href="{{ url_for('portalfejlesztes_net_ben.restart') }}" class="restart-button action-button">Restart Quiz</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user