Programování

Jak přesměrovat požadavek v ASP.NET Core MVC

ASP.NET Core je multiplatformní, otevřený, štíhlý, rychlý a modulární rámec pro vytváření vysoce výkonných webových aplikací. Aplikace ASP.NET Core MVC umožňují přesměrovat požadavek na zadanou adresu URL několika různými způsoby. Tento článek hovoří o tom, jak toho můžeme dosáhnout pomocí příkladů kódu, kdykoli je to vhodné.

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

[Také na: Jak refaktorovat Boží objekty v C #]

Vytvořte projekt ASP.NET Core MVC v sadě Visual Studio

Nejprve si vytvořme projekt ASP.NET Core ve Visual Studiu 2019. Za předpokladu, že je ve vašem systému nainstalovaná Visual Studio 2019, vytvořte nový projekt ASP.NET Core ve Visual Studiu podle níže uvedených kroků.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Webová aplikace ASP.NET Core“.
  4. Klikněte na Další.
  5. V okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Volitelně zaškrtněte políčko „Umístit řešení a projekt do stejného adresáře“, podle vašich preferencí.
  7. Klikněte na Vytvořit.
  8. V okně „Vytvořit novou webovou aplikaci ASP.NET Core“, které se zobrazí dále, vyberte jako běhový modul .NET Core a z rozevíracího seznamu v horní části vyberte ASP.NET Core 3.1 (nebo novější).
  9. Vyberte „Webová aplikace (Model-View-Controller)“ jako šablonu projektu a vytvořte novou aplikaci ASP.NET Core MVC.
  10. Ujistěte se, že políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“ nejsou zaškrtnuta, protože zde tyto funkce nebudeme používat.
  11. Ujistěte se, že je ověřování nastaveno na „Bez ověřování“, protože také nebudeme používat ověřování.
  12. Klikněte na Vytvořit.

Následující kroky vytvoří nový projekt ASP.NET Core MVC v sadě Visual Studio 2019. Tento projekt použijeme v níže uvedených částech, abychom ilustrovali, jak můžeme přesměrovat požadavky při práci s akčními metodami v ASP.NET Core 3.1.

Výsledkem akce přesměrování je ASP.NET Core MVC

V ASP.NET Core MVC existuje několik typů výsledků akcí, například RedirectResult, RedirectToActionResult, RedirectToRouteResult a LocalRedirectResult. Všechny tyto třídy rozšiřují třídu ActionResult a rozhraní IActionResult a IKeepTempDataResult a vrací Found (Http Status Code 302), Moved Permanently (Http Status Code 301), Temporary Redirect (Http Status Code 307) nebo Permanent Redirect (Http Status Code 308) ).

V této části prozkoumáme, jak můžeme s každým z nich pracovat.

Použijte RedirectResult v ASP.NET Core MVC

K vrácení RedirectResult můžete použít kteroukoli z následujících metod:

  • Přesměrování - Nalezen stavový kód HTTP 302 (dočasně přesunut na adresu URL uvedenou v záhlaví umístění)
  • RedirectPermanent - Stavový kód HTTP 301 byl trvale přesunut
  • RedirectPermanentPreserveMethod - HTTP Status Code 308 Permanent Redirect
  • RedirectPreserveMethod - Http stavový kód 307 Dočasné přesměrování

Následující řádky kódu ukazují, jak můžete použít každou z těchto metod.

Přesměrování („/ Autor / Rejstřík“);
RedirectPermanent ("/ Autor / Rejstřík");
RedirectPermanentPreserveMethod ("/ Autor / Rejstřík");
RedirectPreserveMethod ("/ Autor / Rejstřík");

Alternativně můžete vrátit instanci RedirectResult, jak je ukázáno ve fragmentu kódu uvedeném níže.

public RedirectResult Index ()

{

vrátit nový RedirectResult (url: "/ Author / Index", permanent: true,

preserveMethod: true);

}

Všimněte si, že metodu Redirect lze použít k přesměrování požadavku na zadanou adresu URL. Tato metoda je k dispozici v abstraktní základní třídě s názvem ControllerBase.

public RedirectResult Index ()

{

vrátit přesměrování ("// google.com");

}

Je třeba poznamenat, že řadiče, které vytvoříte v ASP.NET Core MVC, rozšiřují třídu Controller. Tato třída zase rozšiřuje třídu ControllerBase a implementuje rozhraní IActionFilter, IFilterMetadata, IAsyncActionFilter a IDisposable.

Použijte RedirectToActionResult v ASP.NET Core MVC

Tento výsledek akce lze použít k přesměrování na zadanou akci a ovladač. Pokud není zadán žádný řadič, přesměruje se na zadanou akci v aktuálním řadiči. K přesměrování na zadanou akci a vrácení instance RedirectToActionResult z vaší metody akce můžete použít kteroukoli z následujících metod.

  • RedirectToAction - Nalezen stavový kód HTTP 302 (dočasně přesunut na adresu URL uvedenou v záhlaví umístění)
  • RedirectToActionPermanent - HTTP stavový kód 301 přesunut trvale
  • RedirectToActionPermanentPreserveMethod - HTTP stavový kód 308 trvalé přesměrování
  • RedirectToActionPreserveMethod - Http stavový kód 307 Dočasné přesměrování

Následující fragment kódu ukazuje, jak lze použít metodu RedirectToAction.

public RedirectToActionResult Index ()

{

return RedirectToAction (actionName: "Index", controllerName: "Author");

}

Název ovladače můžete přeskočit, pokud chcete přesměrovat požadavek na metodu akce v aktuálním ovladači. Následující fragment kódu ukazuje, jak toho lze dosáhnout.

public RedirectToActionResult Index ()

{

vrátit RedirectToAction (název akce: "Ochrana osobních údajů");

}

Použijte RedirectToRouteResult v ASP.NET Core MVC

Toto je další výsledek akce, který lze použít k přesměrování požadavku na zadanou trasu. K vrácení instance RedirectToRouteResult z vaší metody akce můžete použít kteroukoli z následujících metod.

  • RedirectToRoute - Nalezen stavový kód HTTP 302 (dočasně přesunut na adresu URL uvedenou v záhlaví umístění)
  • RedirectToRoutePermanent - stavový kód HTTP 301 byl trvale přesunut
  • RedirectToRoutePermanentPreserveMethod - HTTP stavový kód 308 Trvalé přesměrování
  • RedirectToRoutePreserveMethod - Http stavový kód 307 Dočasné přesměrování

Následující fragment kódu ukazuje, jak lze použít metodu RedirectToRoute.

public RedirectToRouteResult Index ()

{

vrátit RedirectToRoute ("autor");

}

Při přesměrování můžete také určit hodnotu trasy, jak je ukázáno v níže uvedeném fragmentu kódu.

var routeValue = nový RouteValueDictionary

(new {action = "View", controller = "Author"});

vrátit RedirectToRoute (routeValue);

Použijte LocalRedirectResult v ASP.NET Core MVC

Tento výsledek akce se používá, když chcete přesměrovat na místní adresu URL. Pokud s ním použijete externí adresu URL, hodí InvalidOperationException. K vrácení instance LocalRedirectResult z vaší metody akce můžete použít kteroukoli z následujících metod.

  • LocalRedirect - Nalezen stavový kód HTTP 302 (dočasně přesunut na adresu URL uvedenou v záhlaví umístění)
  • LocalRedirectPermanent - HTTP stavový kód 301 přesunut trvale
  • LocalRedirectPermanentPreserveMethod - HTTP stavový kód 308 trvalé přesměrování
  • LocalRedirectPreserveMethod - Http stavový kód 307 Dočasné přesměrování

Přesměrování na stránky Razor v ASP.NET Core MVC

Nakonec si všimněte, že můžete dokonce přesměrovat na stránky s břitvou pomocí metody RedirectToPage a určit cílovou stránku s břitvou, na kterou bude požadavek přesměrován. Metoda RedirectToPage vrací instanci RedirectToPageResult společně se stavovým kódem HTTP 302.

Pokud máte stránku s názvem Autor, kde chcete přesměrovat požadavek, můžete použít následující fragment kódu.

public IActionResult RedirectToAuthorPage ()

{

vrátit RedirectToPage („Autor“);

}

Jak dělat více v ASP.NET Core:

  • Jak používat směrování atributů v ASP.NET Core
  • Jak předat parametry akčním metodám v ASP.NET Core MVC
  • Jak používat analyzátory API v ASP.NET Core
  • Jak používat tokeny dat trasy v ASP.NET Core
  • Jak používat správu verzí API v ASP.NET Core
  • Jak používat objekty přenosu dat v ASP.NET Core 3.1
  • Jak zpracovat chyby 404 v ASP.NET Core MVC
  • Jak používat vkládání závislostí ve filtrech akcí v ASP.NET Core 3.1
  • Jak používat vzor možností v ASP.NET Core
  • Jak používat směrování koncových bodů v ASP.NET Core 3.0 MVC
  • Jak exportovat data do aplikace Excel v ASP.NET Core 3.0
  • Jak používat LoggerMessage v ASP.NET Core 3.0
  • Jak odesílat e-maily v ASP.NET Core
  • Jak protokolovat data na SQL Server v ASP.NET Core
  • Jak naplánovat úlohy pomocí Quartz.NET v ASP.NET Core
  • Jak vrátit data z webového rozhraní API ASP.NET Core
  • Jak formátovat data odpovědí v ASP.NET Core
  • Jak konzumovat webové rozhraní API ASP.NET Core pomocí RestSharp
  • Jak provádět asynchronní operace pomocí nástroje Dapper
  • Jak používat příznaky funkcí v ASP.NET Core
  • Jak používat atribut FromServices v ASP.NET Core
  • Jak pracovat s cookies v ASP.NET Core
  • Jak pracovat se statickými soubory v ASP.NET Core
  • Jak používat Middleware pro přepis adres URL v ASP.NET Core
  • Jak implementovat omezení rychlosti v ASP.NET Core
  • Jak používat Azure Application Insights v ASP.NET Core
  • Používání pokročilých funkcí NLog v ASP.NET Core
  • Jak zpracovat chyby v ASP.NET Web API
  • Jak implementovat globální zpracování výjimek v ASP.NET Core MVC
  • Jak zacházet s hodnotami null v ASP.NET Core MVC
  • Pokročilé správy verzí v ASP.NET Core Web API
  • Jak pracovat s pracovními službami v ASP.NET Core
  • Jak používat rozhraní Data Protection API v ASP.NET Core
  • Jak používat podmíněný middleware v ASP.NET Core
  • Jak pracovat se stavem relace v ASP.NET Core
  • Jak psát efektivní řadiče v ASP.NET Core