Programovanie

Ako presmerovať požiadavku v ASP.NET Core MVC

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.

  1. Spustite Visual Studio IDE.
  2. Kliknite na „Vytvoriť nový projekt“.
  3. V okne „Vytvoriť nový projekt“ vyberte zo zobrazeného zoznamu šablón „Webová aplikácia ASP.NET Core“.
  4. Kliknite na Ďalej.
  5. V okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
  6. Voliteľne začiarknite políčko „Umiestniť riešenie a projekt do rovnakého adresára“, podľa vašich preferencií.
  7. Kliknite na tlačidlo Vytvoriť.
  8. 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ší).
  9. Vyberte „Webová aplikácia (Model-View-Controller)“ ako šablónu projektu na vytvorenie novej aplikácie ASP.NET Core MVC.
  10. Skontrolujte, či nie sú začiarknuté políčka „Povoliť podporu Docker“ a „Konfigurovať pre HTTPS“, pretože tu nebudeme tieto funkcie používať.
  11. Skontrolujte, či je overenie nastavené na „Bez overenia“, pretože tiež nebudeme používať overenie.
  12. 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