Kako preusmjeriti zahtjev u ASP.NET Core MVC

ASP.NET Core je višeplatformski, otvoreni izvor, mršav, brz i modularan okvir za izgradnju web aplikacija visokih performansi. ASP.NET Core MVC aplikacije omogućuju vam preusmjeravanje zahtjeva na navedeni URL na nekoliko različitih načina. Ovaj članak govori o tome kako to možemo postići primjerima koda gdje god je to prikladno.

Da biste radili s primjerima koda iz ovog članka, u sustavu biste trebali instalirati Visual Studio 2019. Ako još nemate kopiju, ovdje možete preuzeti Visual Studio 2019. 

[Također na: Kako refaktorirati Božje objekte u C #]

Stvorite ASP.NET Core MVC projekt u Visual Studiju

Prvo, kreirajmo ASP.NET Core projekt u Visual Studio 2019. Pod pretpostavkom da je Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste stvorili novi ASP.NET Core projekt u Visual Studio.

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "ASP.NET Core Web Application".
  4. Kliknite Dalje.
  5. U prozoru „Konfiguriranje novog projekta“ navedite naziv i mjesto za novi projekt.
  6. Po želji potvrdite okvir "Smjesti rješenje i projekt u isti direktorij", ovisno o vašim željama.
  7. Kliknite Stvori.
  8. U sljedećem prozoru "Stvaranje nove web-aplikacije ASP.NET Core" odaberite .NET Core kao vrijeme izvođenja i ASP.NET Core 3.1 (ili noviju) s padajućeg popisa na vrhu.
  9. Odaberite „Web aplikacija (Model-View-Controller)“ kao predložak projekta za stvaranje nove ASP.NET Core MVC aplikacije. 
  10. Obavezno označite potvrdne okvire "Omogući podršku za Docker" i "Konfiguriraj za HTTPS" jer ovdje nećemo koristiti te značajke.
  11. Provjerite je li provjera autentičnosti postavljena na "Bez provjere autentičnosti" jer ni mi nećemo koristiti provjeru autentičnosti.
  12. Kliknite Stvori.

Slijedeći ove korake stvorit će se novi ASP.NET Core MVC projekt u Visual Studio 2019. Upotrijebit ćemo ovaj projekt u odjeljcima u nastavku kako bismo ilustrirali kako možemo preusmjeriti zahtjeve pri radu s metodama radnji u ASP.NET Core 3.1.

Rezultat preusmjeravanja rezultira ASP.NET Core MVC

U ASP.NET Core MVC postoji nekoliko vrsta rezultata radnji, kao što su RedirectResult, RedirectToActionResult, RedirectToRouteResult i LocalRedirectResult. Sve ove klase proširuju klasu ActionResult i sučelja IActionResult i IKeepTempDataResult te vraćaju Pronađeno (Http statusni kod 302), Trajno premješteno (Http statusni kod 301), Privremeno preusmjeravanje (Http statusni kod 307) ili Trajno preusmjeravanje (Http statusni kod 308 ).

U ovom ćemo odjeljku ispitati kako možemo raditi sa svakim od njih.

Koristite RedirectResult u ASP.NET Core MVC

Možete vratiti bilo koju od sljedećih metoda za vraćanje RedirectResult:

  • Preusmjeravanje - Pronađen Http statusni kod 302 (privremeno premješten na URL naveden u zaglavlju lokacije)
  • RedirectPermanent - Http statusni kod 301 Premješten trajno
  • RedirectPermanentPreserveMethod - Http statusni kod 308 Trajno preusmjeravanje
  • RedirectPreserveMethod - Http statusni kod 307 Privremena preusmjeravanja

Sljedeći retci koda pokazuju kako možete koristiti svaku od ovih metoda.

Preusmjeravanje ("/ Autor / Kazalo");
RedirectPermanent ("/ Autor / Kazalo");
RedirectPermanentPreserveMethod ("/ Autor / Kazalo");
RedirectPreserveMethod ("/ Autor / Kazalo");

Alternativno, možete vratiti primjerak RedirectResult kao što je prikazano u isječku koda koji je dat u nastavku.

javni indeks preusmjeravanja ()

{

   vrati novi RedirectResult (url: "/ Autor / Indeks", trajno: true,

                             saveMethod: true);

}

Napominjemo da se metoda preusmjeravanja može koristiti za preusmjeravanje zahtjeva na navedeni URL. Ova metoda je dostupna u apstraktnoj osnovnoj klasi nazvanoj ControllerBase.

javni indeks preusmjeravanja ()

{

  return Redirect ("// google.com");

}

Treba napomenuti da kontroleri koje kreirate u ASP.NET Core MVC proširuju klasu Controller. Ova klasa zauzvrat proširuje klasu ControllerBase i implementira sučelja IActionFilter, IFilterMetadata, IAsyncActionFilter i IDisposable.

Koristite RedirectToActionResult u ASP.NET Core MVC

Ovaj rezultat akcije može se koristiti za preusmjeravanje na navedenu radnju i kontroler. Ako nije naveden nijedan kontroler, on preusmjerava na navedenu radnju unutar trenutnog kontrolera. Možete koristiti bilo koju od sljedećih metoda za preusmjeravanje na navedenu radnju i vraćanje instance RedirectToActionResult iz vaše metode akcije.

  • RedirectToAction - Pronađen Http statusni kod 302 (privremeno premješten na URL naveden u zaglavlju lokacije)
  • RedirectToActionPermanent - Http statusni kod 301 Premješten trajno
  • RedirectToActionPermanentPreserveMethod - Http statusni kod 308 Trajno preusmjeravanje
  • RedirectToActionPreserveMethod - Http statusni kod 307 Privremeno preusmjeravanje

Sljedeći isječak koda ilustrira kako se metoda RedirectToAction može koristiti.

javni indeks RedirectToActionResult ()

{

    return RedirectToAction (actionName: "Index", ControllerName: "Autor");

}

Možete preskočiti ime kontrolera ako želite preusmjeriti zahtjev na metodu radnje u trenutnom kontroleru. Sljedeći isječak koda pokazuje kako se to može postići.

javni indeks RedirectToActionResult ()

{

   return RedirectToAction (actionName: "Privacy");

}

Koristite RedirectToRouteResult u ASP.NET Core MVC

Ovo je još jedan rezultat akcije koji se može koristiti za preusmjeravanje zahtjeva na navedenu rutu. Možete koristiti bilo koju od sljedećih metoda za vraćanje instance RedirectToRouteResult iz vaše metode akcije.

  • RedirectToRoute - Pronađen Http statusni kod 302 (privremeno premješten na URL naveden u zaglavlju lokacije)
  • RedirectToRoutePermanent - Http statusni kod 301 Premješten trajno
  • RedirectToRoutePermanentPreserveMethod - Http statusni kod 308 Trajno preusmjeravanje
  • RedirectToRoutePreserveMethod - Http statusni kod 307 Privremeno preusmjeravanje

Sljedeći isječak koda pokazuje kako se metoda RedirectToRoute može koristiti.

javni indeks RedirectToRouteResult ()

{

    return RedirectToRoute ("autor");

}

Također možete odrediti vrijednost rute prilikom preusmjeravanja kao što je prikazano u isječku koda koji je dan u nastavku.

var routeValue = novi RouteValueDictionary

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

return RedirectToRoute (routeValue);

Koristite LocalRedirectResult u ASP.NET Core MVC

Ovaj rezultat radnje koristi se kada želite preusmjeriti na lokalni URL. Baca InvalidOperationException ako s njim koristite vanjski URL. Možete koristiti bilo koju od sljedećih metoda za vraćanje instance LocalRedirectResult iz vaše metode akcije.

  • LocalRedirect - Pronađen Http statusni kod 302 (privremeno premješten na URL naveden u zaglavlju lokacije)
  • LocalRedirectPermanent - Http statusni kod 301 Premješten trajno
  • LocalRedirectPermanentPreserveMethod - Http statusni kod 308 Trajno preusmjeravanje
  • LocalRedirectPreserveMethod - Http statusni kod 307 Privremena preusmjeravanja

Preusmjerite na stranice britve u ASP.NET Core MVC

Konačno, imajte na umu da čak možete preusmjeriti na stranice britve pomoću metode RedirectToPage, navodeći ciljnu stranicu britve na koju ćete preusmjeriti zahtjev. Metoda RedirectToPage vraća instancu RedirectToPageResult zajedno s HTTP statusnim kodom 302.

Ako imate stranicu s imenom Autor, na koju želite da se zahtjev preusmjeri, možete upotrijebiti sljedeći isječak koda.

javna IActionResult RedirectToAuthorPage ()

{

    return RedirectToPage ("Autor");

}

Kako učiniti više u ASP.NET Coreu:

  • Kako se koristi usmjeravanje atributa u ASP.NET Core
  • Kako proslijediti parametre metodama akcije u ASP.NET Core MVC
  • Kako koristiti API analizatore u ASP.NET Coreu
  • Kako koristiti tokene podataka rute u ASP.NET Core
  • Kako koristiti API izradu verzija u ASP.NET Coreu
  • Kako koristiti objekte za prijenos podataka u ASP.NET Core 3.1
  • Kako postupati s pogreškama 404 u ASP.NET Core MVC
  • Kako se koristi injekcija ovisnosti u akcijskim filtrima u ASP.NET Core 3.1
  • Kako se koristi obrazac opcija u ASP.NET Core
  • Kako se koristi usmjeravanje krajnje točke u ASP.NET Core 3.0 MVC
  • Kako izvesti podatke u Excel u ASP.NET Core 3.0
  • Kako koristiti LoggerMessage u ASP.NET Core 3.0
  • Kako poslati e-poštu u ASP.NET Core
  • Kako prijaviti podatke na SQL Server u ASP.NET Core
  • Kako rasporediti poslove pomoću Quartz.NET-a u ASP.NET Core
  • Kako vratiti podatke s ASP.NET Core Web API-ja
  • Kako oblikovati podatke o odgovoru u ASP.NET Core
  • Kako konzumirati ASP.NET Core Web API pomoću RestSharp
  • Kako izvesti asinkrne operacije pomoću Dappera
  • Kako koristiti zastavice značajki u ASP.NET Coreu
  • Kako koristiti atribut FromServices u ASP.NET Core
  • Kako raditi s kolačićima u ASP.NET Coreu
  • Kako raditi sa statičkim datotekama u ASP.NET Coreu
  • Kako koristiti URL za prepisivanje Middlewarea u ASP.NET Core
  • Kako implementirati ograničenje brzine u ASP.NET Core
  • Kako koristiti Azure Application Insights u ASP.NET Core
  • Korištenje naprednih značajki NLog u ASP.NET Core
  • Kako postupati s pogreškama u ASP.NET web API-ju
  • Kako implementirati globalno rukovanje iznimkama u ASP.NET Core MVC
  • Kako postupati s null vrijednostima u ASP.NET Core MVC
  • Napredna verzija u ASP.NET Core Web API
  • Kako raditi s uslugama za radnike u ASP.NET Coreu
  • Kako koristiti API zaštite podataka u ASP.NET Core
  • Kako se koristi uvjetni međuprodukt u ASP.NET Coreu
  • Kako raditi sa stanjem sesije u ASP.NET Coreu
  • Kako napisati učinkovite kontrolere u ASP.NET Core