Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Steve Smith a Scott Addie
Kontrolery, akce a výsledky akcí jsou základní součástí toho, jak vývojáři vytvářejí aplikace pomocí ASP.NET Core MVC.
Kontroler slouží k definování a seskupení sady akcí. Akce (nebo metoda akce) je metoda na kontroleru, který zpracovává požadavky. Kontrolery logicky seskupí podobné akce dohromady. Tato agregace akcí umožňuje souhrnně použít společné sady pravidel, jako je směrování, ukládání do mezipaměti a autorizace. Požadavky se mapují na akce prostřednictvím směrování. Kontrolery se aktivují a vyřaďte na každý požadavek.
Podle konvence třídy kontroleru:
Microsoft.AspNetCore.Mvc.Controller
.Kontroler je okamžitě dostupná třída, obvykle veřejná, ve které platí alespoň jedna z následujících podmínek:
Controller
.Controller
.[Controller]
se použije na třídu.Třída kontroleru nesmí mít přidružený [NonController]
atribut.
Kontrolery by měly dodržovat zásadu explicitních závislostí. Existuje několik přístupů k implementaci tohoto principu. Pokud více akcí kontroleru vyžaduje stejnou službu, zvažte použití injektáže konstruktoru k vyžádání těchto závislostí. Pokud je služba potřebná pouze jednou metodou akce, zvažte použití injektáže akce k vyžádání závislosti.
V rámci modelu ontroller Model-View-C zodpovídá kontroler za počáteční zpracování požadavku a vytvoření instance modelu. Obecně platí, že obchodní rozhodnutí by se měla provádět v rámci modelu.
Kontroler převezme výsledek zpracování modelu (pokud existuje) a vrátí buď správné zobrazení a jeho přidružená data zobrazení, nebo výsledek volání rozhraní API. Další informace najdete v přehledu ASP.NET Core MVC a začínáme s ASP.NET Core MVC a sadou Visual Studio.
Kontroler je abstrakce na úrovni uživatelského rozhraní. Jeho odpovědností je zajistit, aby data požadavku byla platná a zvolila, které zobrazení (nebo výsledek pro rozhraní API) se má vrátit. V dobře faktorovaných aplikacích nezahrnuje přímý přístup k datům ani obchodní logiku. Místo toho správce deleguje na služby, které tyto povinnosti zpracovávají.
Veřejné metody v kontroleru s výjimkou těch, které mají [NonAction]
atribut, jsou akce. Parametry akcí jsou vázané na data požadavku a ověřují se pomocí vazby modelu. K ověření modelu dochází pro vše, co je vázané na model. Hodnota ModelState.IsValid
vlastnosti označuje, zda vazby modelu a ověření proběhlo úspěšně.
Metody akcí by měly obsahovat logiku pro mapování požadavku na obchodní problém. Obchodní obavy by se obvykle měly reprezentovat jako služby, ke kterým kontroler přistupuje prostřednictvím injektáže závislostí. Akce pak namapuje výsledek obchodní akce na stav aplikace.
Akce můžou vrátit cokoli, ale často vrací instanci IActionResult
(nebo Task<IActionResult>
pro asynchronní metody), která vytváří odpověď. Metoda akce zodpovídá za výběr typu odpovědi. Výsledek akce odpovídá.
Kontrolery obvykle dědí z Controller, i když to není povinné. Odvozování z Controller
poskytuje přístup ke třem kategoriím pomocných metod:
Není zahrnuta žádná Content-Type
hlavička odpovědi HTTP, protože tělo odpovědi neobsahuje obsah k popisu.
V této kategorii existují dva typy výsledků: Přesměrování a Stavový kód HTTP.
Stavový kód HTTP
Tento typ vrátí stavový kód HTTP. Několik pomocných metod tohoto typu jsou BadRequest
, NotFound
a Ok
. Například return BadRequest();
při spuštění vytvoří stavový kód 400. Pokud jsou metody, jako BadRequest
je , NotFound
a Ok
jsou přetíženy, již nejsou kvalifikovány jako reakce stavového kódu HTTP, protože probíhá vyjednávání obsahu.
Přesměrovat
Tento typ vrátí přesměrování na akci nebo cíl (pomocí Redirect
, LocalRedirect
, RedirectToAction
, nebo RedirectToRoute
). Například return RedirectToAction("Complete", new {id = 123});
přesměruje na Complete
předání anonymního objektu.
Typ výsledku přesměrování se liší od typu stavového kódu HTTP, a to především při přidání Location
hlavičky odpovědi HTTP.
Většina pomocných metod v této kategorii obsahuje ContentType
vlastnost, která umožňuje nastavit hlavičku Content-Type
odpovědi pro popis textu odpovědi.
V této kategorii existují dva typy výsledků: Zobrazit a Formátovaná odpověď.
Zobrazení
Tento typ vrátí zobrazení, které používá model k vykreslení HTML. Například return View(customer);
předá model do zobrazení pro datovou vazbu.
Formátovaná odpověď
Tento typ vrací formát JSON nebo podobný formát výměny dat, který představuje objekt určitým způsobem. Například return Json(customer);
serializuje zadaný objekt do formátu JSON.
Mezi další běžné metody tohoto typu patří File
a PhysicalFile
. Například return PhysicalFile(customerFilePath, "text/xml");
vrátí PhysicalFileResult.
Tato kategorie se lépe označuje jako vyjednávání obsahu. Vyjednávání obsahu se použije vždy, když akce vrátí ObjectResult typ nebo něco jiného než implementaci IActionResult . Akce, která vrací neimigresiIActionResult
(například object
) vrátí také formátovanou odpověď.
Mezi pomocné metody tohoto typu patří BadRequest
, CreatedAtRoute
a Ok
. Mezi příklady těchto metod patří return BadRequest(modelState);
, return CreatedAtRoute("routename", values, newobject);
a return Ok(value);
, v uvedeném pořadí. Všimněte si, že BadRequest
Ok
vyjednávání obsahu se provádí pouze při předání hodnoty, aniž by byla předána hodnota, místo toho slouží jako typy výsledků stavového kódu HTTP. Metoda CreatedAtRoute
na druhé straně vždy provádí vyjednávání obsahu, protože jeho přetížení všechny vyžadují předání hodnoty.
Aplikace obvykle sdílejí části pracovního postupu. Mezi příklady patří aplikace, která vyžaduje ověření pro přístup k nákupnímu košíku, nebo aplikaci, která ukládá data do mezipaměti na některých stránkách. K provedení logiky před nebo po metodě akce použijte filtr. Použití filtrů u průřezových aspektů může snížit duplicitu.
Většina atributů filtru, například [Authorize]
, lze použít na úrovni kontroleru nebo akce v závislosti na požadované úrovni členitosti.
Zpracování chyb a ukládání odpovědí do mezipaměti jsou často nejčastějšími aspekty:
Řadu problémů s křížovým dělením je možné zpracovat pomocí filtrů nebo vlastního middlewaru.
Zpětná vazba k produktu ASP.NET Core
ASP.NET Core je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceŠkolení
Modul
Vytvoření webového rozhraní API s řadiči ASP.NET Core - Training
Vytvořte službu RESTful s řadiči ASP.NET Core, které podporují operace vytváření, čtení, aktualizace a odstraňování (CRUD).