ASP.NET Core je multiplatformový, otvorený, štíhly, rýchly a modulárny rámec pre vytváranie vysoko výkonných webových aplikácií. Aplikácie ASP.NET Core MVC vám umožňujú presmerovať požiadavku na zadanú adresu URL niekoľkými rôznymi spôsobmi. Tento článok hovorí o tom, ako to môžeme dosiahnuť pomocou príkladov kódu, kedykoľvek je to vhodné.
Ak chcete pracovať s príkladmi kódu uvedenými v tomto článku, mali by ste mať vo svojom systéme nainštalovanú aplikáciu Visual Studio 2019. Ak ešte nemáte kópiu, môžete si tu stiahnuť Visual Studio 2019.
[Tiež k: Ako refaktorovať objekty Boha v C #]
Vytvorte projekt ASP.NET Core MVC v Visual Studio
Najprv si vytvoríme projekt ASP.NET Core v Visual Studio 2019. Za predpokladu, že je vo vašom systéme nainštalované Visual Studio 2019, vytvorte nový projekt ASP.NET Core v Visual Studio podľa krokov uvedených nižšie.
- Spustite Visual Studio IDE.
- Kliknite na „Vytvoriť nový projekt“.
- V okne „Vytvoriť nový projekt“ vyberte zo zobrazeného zoznamu šablón „Webová aplikácia ASP.NET Core“.
- Kliknite na Ďalej.
- V okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
- Voliteľne začiarknite políčko „Umiestniť riešenie a projekt do rovnakého adresára“, podľa vašich preferencií.
- Kliknite na tlačidlo Vytvoriť.
- V nasledujúcom okne „Vytvorenie novej webovej aplikácie ASP.NET Core“ vyberte z rozbaľovacieho zoznamu v hornej časti .NET Core ako modul runtime a ASP.NET Core 3.1 (alebo novší).
- Vyberte „Webová aplikácia (Model-View-Controller)“ ako šablónu projektu na vytvorenie novej aplikácie ASP.NET Core MVC.
- Skontrolujte, či nie sú začiarknuté políčka „Povoliť podporu Docker“ a „Konfigurovať pre HTTPS“, pretože tu nebudeme tieto funkcie používať.
- Skontrolujte, či je overenie nastavené na „Bez overenia“, pretože tiež nebudeme používať overenie.
- Kliknite na tlačidlo Vytvoriť.
Nasledovaním týchto krokov vytvoríte nový projekt ASP.NET Core MVC v Visual Studio 2019. Tento projekt použijeme v sekciách nižšie na ilustráciu toho, ako môžeme presmerovať požiadavky pri práci s metódami akcie v ASP.NET Core 3.1.
Výsledkom akcie presmerovania je ASP.NET Core MVC
V ASP.NET Core MVC existuje niekoľko typov výsledkov akcií, napríklad RedirectResult, RedirectToActionResult, RedirectToRouteResult a LocalRedirectResult. Všetky tieto triedy rozširujú triedu ActionResult a rozhrania IActionResult a IKeepTempDataResult a vracajú Nájdené (stavový kód Http 302), Trvalé presunutie (Htp stavový kód 301), Dočasné presmerovanie (Http stavový kód 307) alebo Permanentné presmerovanie (Http stavový kód 308) ).
V tejto časti preskúmame, ako môžeme s každou z nich pracovať.
Použite RedirectResult v ASP.NET Core MVC
Na vrátenie výsledku RedirectResult môžete použiť ktorúkoľvek z nasledujúcich metód:
- Presmerovanie - našiel sa stavový kód HTTP 302 (dočasne presunutý na adresu URL uvedenú v hlavičke umiestnenia)
- RedirectPermanent - HTTP stavový kód 301 bol presunutý natrvalo
- RedirectPermanentPreserveMethod - HTTP stavový kód 308 Permanentné presmerovanie
- RedirectPreserveMethod - Http stavový kód 307 Dočasné presmerovanie
Nasledujúce riadky kódu ukazujú, ako môžete použiť každú z týchto metód.
Presmerovanie („/ Autor / Register“);
RedirectPermanent ("/ Autor / Register");
RedirectPermanentPreserveMethod ("/ Autor / Register");
RedirectPreserveMethod ("/ Autor / Register");
Prípadne môžete vrátiť inštanciu RedirectResult, ako je uvedené v útržku kódu uvedenom nižšie.
public RedirectResult Index (){
vrátiť nový RedirectResult (url: "/ Author / Index", permanent: true,
preserveMethod: true);
}
Upozorňujeme, že na presmerovanie požiadavky na zadanú adresu URL je možné použiť metódu Redirect. Táto metóda je k dispozícii v abstraktnej základnej triede s názvom ControllerBase.
public RedirectResult Index (){
return Redirect ("// google.com");
}
Je potrebné poznamenať, že radiče, ktoré vytvoríte v ASP.NET Core MVC, rozširujú triedu radičov. Táto trieda zase rozširuje triedu ControllerBase a implementuje rozhrania IActionFilter, IFilterMetadata, IAsyncActionFilter a IDisposable.
Použite RedirectToActionResult v ASP.NET Core MVC
Tento výsledok akcie možno použiť na presmerovanie na zadanú akciu a radič. Ak nie je zadaný žiadny radič, presmeruje sa na zadanú akciu v rámci aktuálneho radiča. Môžete použiť ktorúkoľvek z nasledujúcich metód na presmerovanie na zadanú akciu a vrátenie inštancie RedirectToActionResult z vašej metódy akcie.
- RedirectToAction - našiel sa stavový kód HTTP 302 (dočasne presunutý na adresu URL uvedenú v hlavičke umiestnenia)
- RedirectToActionPermanent - HTTP stavový kód 301 sa presunul natrvalo
- RedirectToActionPermanentPreserveMethod - HTTP stavový kód 308 trvalé presmerovanie
- RedirectToActionPreserveMethod - Http stavový kód 307 Dočasné presmerovanie
Nasledujúci úryvok kódu ilustruje, ako je možné použiť metódu RedirectToAction.
public RedirectToActionResult Index (){
return RedirectToAction (actionName: "Index", controllerName: "Author");
}
Názov ovládača môžete preskočiť, ak chcete presmerovať požiadavku na metódu akcie v aktuálnom ovládači. Nasledujúci úryvok kódu ukazuje, ako je to možné dosiahnuť.
public RedirectToActionResult Index (){
return RedirectToAction (actionName: "Privacy");
}
Použite RedirectToRouteResult v ASP.NET Core MVC
Toto je ďalší výsledok akcie, ktorý je možné použiť na presmerovanie požiadavky na zadanú trasu. Môžete použiť ktorúkoľvek z nasledujúcich metód na vrátenie inštancie RedirectToRouteResult z vašej metódy akcie.
- RedirectToRoute - našiel sa stavový kód HTTP 302 (dočasne presunutý na adresu URL uvedenú v hlavičke umiestnenia)
- RedirectToRoutePermanent - HTTP stavový kód 301 sa presunul natrvalo
- RedirectToRoutePermanentPreserveMethod - HTTP stavový kód 308 trvalé presmerovanie
- RedirectToRoutePreserveMethod - Http stavový kód 307 Dočasné presmerovanie
Nasledujúci úryvok kódu ukazuje, ako je možné použiť metódu RedirectToRoute.
verejný index RedirectToRouteResult (){
return RedirectToRoute ("autor");
}
Hodnotu trasy môžete určiť aj pri presmerovaní, ako je uvedené v útržku kódu uvedenom nižšie.
var routeValue = nový RouteValueDictionary(nové {action = "Zobraziť", kontrolór = "Autor"});
návrat RedirectToRoute (routeValue);
Použite LocalRedirectResult v ASP.NET Core MVC
Tento výsledok akcie sa použije, keď chcete presmerovať na miestnu adresu URL. Ak s ním použijete externú adresu URL, hodí InvalidOperationException. Môžete použiť ktorúkoľvek z nasledujúcich metód na vrátenie inštancie LocalRedirectResult z vašej metódy akcie.
- LocalRedirect - našiel sa stavový kód HTTP 302 (dočasne presunutý na adresu URL uvedenú v hlavičke umiestnenia)
- LocalRedirectPermanent - HTTP stavový kód 301 sa presunul natrvalo
- LocalRedirectPermanentPreserveMethod - HTTP stavový kód 308 trvalé presmerovanie
- LocalRedirectPreserveMethod - Http stavový kód 307 Dočasné presmerovanie
Presmerovanie na stránky s britvami v ASP.NET Core MVC
Na záver nezabudnite, že na stránky s britvami môžete dokonca presmerovať pomocou metódy RedirectToPage, pričom zadáte cieľovú stránku s britvami, na ktorú chcete požiadavku presmerovať. Metóda RedirectToPage vráti inštanciu RedirectToPageResult spolu so stavovým kódom HTTP 302.
Ak máte stránku s názvom Autor, na ktorú chcete presmerovať požiadavku, môžete použiť nasledujúci útržok kódu.
public IActionResult RedirectToAuthorPage (){
return RedirectToPage ("Autor");
}
Ako urobiť viac v ASP.NET Core:
- Ako používať smerovanie atribútov v ASP.NET Core
- Ako odovzdať parametre akčným metódam v ASP.NET Core MVC
- Ako používať analyzátory API v ASP.NET Core
- Ako používať tokeny dát trasy v ASP.NET Core
- Ako používať spravovanie verzií API v ASP.NET Core
- Ako používať objekty na prenos dát v ASP.NET Core 3.1
- Ako spracovať chyby 404 v ASP.NET Core MVC
- Ako používať vkladanie závislostí do filtrov akcií v ASP.NET Core 3.1
- Ako používať vzor možností v ASP.NET Core
- Ako používať smerovanie koncového bodu v ASP.NET Core 3.0 MVC
- Ako exportovať údaje do programu Excel v ASP.NET Core 3.0
- Ako používať LoggerMessage v ASP.NET Core 3.0
- Ako posielať e-maily v ASP.NET Core
- Ako prihlásiť údaje na server SQL Server v ASP.NET Core
- Ako plánovať úlohy pomocou Quartz.NET v ASP.NET Core
- Ako vrátiť dáta z webového rozhrania ASP.NET Core Web API
- Ako formátovať údaje odpovedí v ASP.NET Core
- Ako konzumovať webové rozhranie API ASP.NET Core pomocou nástroja RestSharp
- Ako vykonávať asynchronné operácie pomocou nástroja Dapper
- Ako používať príznaky funkcií v ASP.NET Core
- Ako používať atribút FromServices v ASP.NET Core
- Ako pracovať s cookies v ASP.NET Core
- Ako pracovať so statickými súbormi v ASP.NET Core
- Ako používať middleware na prepisovanie adries URL v ASP.NET Core
- Ako implementovať obmedzenie rýchlosti v ASP.NET Core
- Ako používať Azure Application Insights v ASP.NET Core
- Používanie pokročilých funkcií NLog v ASP.NET Core
- Ako spracovať chyby v webovom rozhraní API ASP.NET
- Ako implementovať globálne spracovanie výnimiek v ASP.NET Core MVC
- Ako spracovať nulové hodnoty v ASP.NET Core MVC
- Pokročilé spravovanie verzií v webovom rozhraní API ASP.NET Core
- Ako pracovať s pracovnými službami v ASP.NET Core
- Ako používať rozhranie Data Protection API v ASP.NET Core
- Ako používať podmienený middleware v ASP.NET Core
- Ako pracovať so stavom relácie v ASP.NET Core
- Ako písať efektívne radiče v ASP.NET Core