Programování
MVC základy
Celá aplikace je rozdělena na komponenty 3 typů, hovoříme o Modelech, View (pohledech) a Controllerech (kontrolerech), od toho MVC. Označení pohled se budu snažit vyhýbat, protože mi přijde matoucí, že takto přeložené nekoresponduje s označením V. Neexistuje žádná striktní definice architektury a tak se můžete setkat s více výklady. My se zaměříme na ten nejrozšířenější.
Model
Model obsahuje logiku a vše, co do ní spadá. Mohou to být výpočty, databázové dotazy, validace a podobně. Pro nás to znamená, že modely jsou klasické C# třídy, jako jsme je znali doposud. Model vůbec neví o výstupu. Jeho funkce spočívá v přijetí parametrů zvenku a vydání dat ven. Zdůrazněme, že parametry nemyslíme URL adresu ani žádné jiné parametry od uživatele, ale parametry metod ve třídě modelu.Model neví, odkud data v parametrech přišla a ani jak budou výstupní data zformátována a vypsána.
View
Pohled (View) se stará o zobrazení výstupu uživateli . Jedná se o HTML šablonu, obsahující HTML stránku a tagy speciálního jazyka, který umožňuje do šablony vkládat proměnné, případně provádět iterace (cykly) a podmínky. Pohled Uzivatel.cshtml tedy vypíše detaily o uživateli, pohled Clanek.cshtml vypíše obsah článku.

View není jen šablona, ale zobrazovač výstupu. Obsahuje tedy minimální množství logiky, která je pro výpis nutná (např. kontrola, zda si uživatel vyplnil přezdívku před jejím vypsáním nebo cyklus s komentáři, které se vypisují).

View podobně jako Model vůbec neví, odkud mu data přišla , stará se jen o jejich zobrazení uživateli.
Controller
Controller je nyní onen chybějící prvek, který osvětlí funkčnost celého vzoru. Jedná se o jakéhosi prostředníka, se kterým komunikuje uživatel, model i view. Drží tedy celý systém pohromadě a komponenty propojuje. Jeho funkci pochopíme z ukázky životního cyklu stránky. Nejčastěji má každá entita jeden controller, máme tedy UzivatelController, ClanekController a tak podobně.
Zpracování požadavku


Více informací: ItNetwork
Routování
Nejdříve jde jméno server, pak následně controler a pak dodatečné jméno akce

serverUrl/Controller/Action/

nebo je možnost přidat id?, která je ovšem dobrovolná

serverUrl/Controller/Action/id
Http protokol
HTTP je internetový protokol používaný k přenosu souborů mezi serverem a tzv. klientem, kterým bývá nejčastěji webový prohlížeč, ale může jím být také třeba crawler vyhledávače.

HTTP také říká bezstavový protokol, protože funguje na principu dotaz → odpověď. Například kliknete na nějaký odkaz a váš prohlížeč zašle pomocí HTTP protokolu požadavek s příslušnou adresou na odpovídající server. Zároveň s tím pošle i tzv. HTTP hlavičku. Server následně, opět s pomocí HTTP protokolu, pošle zpět HTML soubor, společně se stavovým kódem a odlišnou HTTP hlavičkou odpovědi.
Více informací: strafelda.cz
Controller
Controller odpovídá za odpovědi, které jsou poslané na server. Logiku do nich dáváme slabou, odkazujeme se na modely a další třídy, které si vytvoříme. Vytváříme je pomocí Přidat > Controller > prázdný controller
Akce (metody) v controlleru
Vytvářime metody, který vracejí zpět IActionResult, který muže vrátit hodně věcí, jelikož je to interface. Možné příklady jsou:
  • View(string? viewName)
    Vraci View se stejným jménem jako je akce, pokud ovšem do parametrů napíšeme jiné jméno, tak zobrazí jiný view
  • RedirectToAction(string jmenoAkce)
    Zavolá to jinou metodu uvnitř toho controlleru
  • Redirect(string urlcesta)
    Zavola to tam kam napíeme v cestě, muže kamkoliv avšak musime psát přesně
  • JSON(object toconaJSON)
    Vraci html view, ale jsou tam jen informace o objektu co jsme vložily
Pokud chceme v metodě nějaký parametry tak využíváme querystring například:
    
        

public class HomeController : Controller
{
    // localhost/Home/Get?pocet=5&jmeno=Pavel
    public IActionResult Get(int pocet, string jmeno)
    {
        /*Dostaneme 
        pocet = 5
        jmeno = "Pavel"
        */
        return View();
    }

    // localhost/Home/Get/5
    public IActionResult GetCar(int id)
    {
        /*Dostaneme 
        id = 5

        Tohle platí, protože int id je nepovinný attribut
        */
        return View();
    }

    // localhost/Home/Get?id=10
    public IActionResult GetHumans(int id)
    {
        /*Dostaneme 
        id = 10

        Tohle platí, protože int id je attribut
        */
        return View();
    }

}