Come reindirizzare una richiesta in ASP.NET Core MVC

ASP.NET Core è un framework multipiattaforma, open source, snello, veloce e modulare per la creazione di applicazioni Web ad alte prestazioni. Le applicazioni ASP.NET Core MVC consentono di reindirizzare una richiesta a un URL specificato in diversi modi. In questo articolo viene illustrato come eseguire questa operazione con esempi di codice laddove appropriato.

Per lavorare con gli esempi di codice forniti in questo articolo, dovresti avere Visual Studio 2019 installato nel tuo sistema. Se non hai già una copia, puoi scaricare Visual Studio 2019 qui. 

[Anche su: Come eseguire il refactoring di oggetti Dio in C #]

Creare un progetto MVC ASP.NET Core in Visual Studio

Prima di tutto, creiamo un progetto ASP.NET Core in Visual Studio 2019. Supponendo che Visual Studio 2019 sia installato nel tuo sistema, segui i passaggi descritti di seguito per creare un nuovo progetto ASP.NET Core in Visual Studio.

  1. Avvia l'IDE di Visual Studio.
  2. Fai clic su "Crea nuovo progetto".
  3. Nella finestra "Crea nuovo progetto", seleziona "Applicazione Web ASP.NET Core" dall'elenco dei modelli visualizzati.
  4. Fare clic su Avanti.
  5. Nella finestra "Configura il tuo nuovo progetto", specifica il nome e la posizione per il nuovo progetto.
  6. Facoltativamente, selezionare la casella di controllo "Posiziona soluzione e progetto nella stessa directory", a seconda delle preferenze.
  7. Fare clic su Crea.
  8. Nella finestra "Crea una nuova applicazione Web ASP.NET Core" mostrata di seguito, seleziona .NET Core come runtime e ASP.NET Core 3.1 (o successivo) dall'elenco a discesa in alto.
  9. Selezionare "Applicazione Web (Model-View-Controller)" come modello di progetto per creare una nuova applicazione ASP.NET Core MVC. 
  10. Assicurati che le caselle di controllo "Abilita supporto Docker" e "Configura per HTTPS" siano deselezionate poiché non utilizzeremo queste funzionalità qui.
  11. Assicurati che l'autenticazione sia impostata su "Nessuna autenticazione" poiché non utilizzeremo nemmeno l'autenticazione.
  12. Fare clic su Crea.

Seguendo questi passaggi verrà creato un nuovo progetto ASP.NET Core MVC in Visual Studio 2019. Useremo questo progetto nelle sezioni seguenti per illustrare come possiamo reindirizzare le richieste quando si lavora con metodi di azione in ASP.NET Core 3.1.

Reindirizza i risultati dell'azione in ASP.NET Core MVC

Esistono diversi tipi di risultati di azione in ASP.NET Core MVC come RedirectResult, RedirectToActionResult, RedirectToRouteResult e LocalRedirectResult. Tutte queste classi estendono la classe ActionResult e le interfacce IActionResult e IKeepTempDataResult e restituiscono Found (Http Status Code 302), Moved Permanently (Http Status Code 301), Temporary Redirect (Http Status Code 307) o Permanent Redirect (Http Status Code 308 ).

Esamineremo come possiamo lavorare con ciascuno di questi in questa sezione.

Usa RedirectResult in ASP.NET Core MVC

È possibile utilizzare uno dei seguenti metodi per restituire un RedirectResult:

  • Reindirizzamento - Trovato codice di stato Http 302 (spostato temporaneamente all'URL fornito nell'intestazione della posizione)
  • RedirectPermanent - Codice di stato HTTP 301 spostato in modo permanente
  • RedirectPermanentPreserveMethod - Codice di stato HTTP 308 Reindirizzamento permanente
  • RedirectPreserveMethod - Codice di stato HTTP 307 Reindirizzamento temporaneo

Le seguenti righe di codice mostrano come utilizzare ciascuno di questi metodi.

Reindirizzamento ("/ Autore / Indice");
RedirectPermanent ("/ Autore / Indice");
RedirectPermanentPreserveMethod ("/ Author / Index");
RedirectPreserveMethod ("/ Author / Index");

In alternativa, puoi restituire un'istanza di RedirectResult come mostrato nello snippet di codice riportato di seguito.

Indice RedirectResult pubblico ()

{

   restituire nuovo RedirectResult (url: "/ Author / Index", permanente: true,

                             preservMethod: true);

}

Tieni presente che il metodo Redirect può essere utilizzato per reindirizzare una richiesta a un URL specificato. Questo metodo è disponibile nella classe base astratta denominata ControllerBase.

Indice RedirectResult pubblico ()

{

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

}

Va notato che i controller creati in ASP.NET Core MVC estendono la classe Controller. Questa classe a sua volta estende la classe ControllerBase e implementa le interfacce IActionFilter, IFilterMetadata, IAsyncActionFilter e IDisposable.

Usa RedirectToActionResult in ASP.NET Core MVC

Questo risultato dell'azione può essere utilizzato per reindirizzare all'azione e al controller specificati. Se non viene specificato alcun controller, reindirizza all'azione specificata all'interno del controller corrente. È possibile utilizzare uno dei seguenti metodi per reindirizzare all'azione specificata e restituire un'istanza di RedirectToActionResult dal metodo di azione.

  • RedirectToAction - Codice di stato HTTP 302 trovato (spostato temporaneamente all'URL fornito nell'intestazione della posizione)
  • RedirectToActionPermanent - Codice di stato Http 301 spostato in modo permanente
  • RedirectToActionPermanentPreserveMethod - Codice di stato Http 308 Reindirizzamento permanente
  • RedirectToActionPreserveMethod - Codice di stato HTTP 307 Reindirizzamento temporaneo

Il frammento di codice seguente illustra come utilizzare il metodo RedirectToAction.

Indice RedirectToActionResult pubblico ()

{

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

}

È possibile ignorare il nome del controller se si desidera reindirizzare la richiesta a un metodo di azione nel controller corrente. Il frammento di codice seguente mostra come ottenere questo risultato.

Indice RedirectToActionResult pubblico ()

{

   return RedirectToAction (actionName: "Privacy");

}

Usa RedirectToRouteResult in ASP.NET Core MVC

Questo è ancora un altro risultato dell'azione che può essere utilizzato per reindirizzare la richiesta alla route specificata. È possibile utilizzare uno dei seguenti metodi per restituire un'istanza di RedirectToRouteResult dal metodo di azione.

  • RedirectToRoute: codice di stato HTTP 302 trovato (spostato temporaneamente all'URL fornito nell'intestazione della posizione)
  • RedirectToRoutePermanent - Codice di stato HTTP 301 spostato in modo permanente
  • RedirectToRoutePermanentPreserveMethod - Codice di stato Http 308 Reindirizzamento permanente
  • RedirectToRoutePreserveMethod - Codice di stato HTTP 307 Reindirizzamento temporaneo

Il frammento di codice seguente mostra come utilizzare il metodo RedirectToRoute.

Indice RedirectToRouteResult pubblico ()

{

    return RedirectToRoute ("autore");

}

Puoi anche specificare il valore del percorso durante il reindirizzamento come mostrato nello snippet di codice riportato di seguito.

var routeValue = new RouteValueDictionary

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

return RedirectToRoute (routeValue);

Usa LocalRedirectResult in ASP.NET Core MVC

Questo risultato dell'azione viene utilizzato quando si desidera reindirizzare a un URL locale. Genera un'eccezione InvalidOperationException se utilizzi un URL esterno con esso. È possibile utilizzare uno dei seguenti metodi per restituire un'istanza di LocalRedirectResult dal metodo di azione.

  • LocalRedirect - Trovato codice di stato Http 302 (spostato temporaneamente all'URL fornito nell'intestazione della posizione)
  • LocalRedirectPermanent - Codice di stato HTTP 301 spostato in modo permanente
  • LocalRedirectPermanentPreserveMethod - Http Status Code 308 Permanent Redirect
  • LocalRedirectPreserveMethod - Codice di stato HTTP 307 Reindirizzamento temporaneo

Reindirizzamento a pagine Razor in ASP.NET Core MVC

Infine, tieni presente che puoi persino reindirizzare a pagine razor utilizzando il metodo RedirectToPage, specificando la pagina razor di destinazione a cui reindirizzare la richiesta. Il metodo RedirectToPage restituisce un'istanza RedirectToPageResult insieme a un codice di stato HTTP 302.

Se si dispone di una pagina denominata Autore, in cui si desidera reindirizzare la richiesta, è possibile utilizzare il seguente frammento di codice.

public IActionResult RedirectToAuthorPage ()

{

    return RedirectToPage ("Autore");

}

Come fare di più in ASP.NET Core:

  • Come utilizzare il routing degli attributi in ASP.NET Core
  • Come passare parametri ai metodi di azione in ASP.NET Core MVC
  • Come usare gli analizzatori di API in ASP.NET Core
  • Come usare i token di dati di route in ASP.NET Core
  • Come usare il controllo delle versioni delle API in ASP.NET Core
  • Come utilizzare gli oggetti di trasferimento dati in ASP.NET Core 3.1
  • Come gestire gli errori 404 in ASP.NET Core MVC
  • Come usare l'inserimento delle dipendenze nei filtri di azione in ASP.NET Core 3.1
  • Come usare il modello di opzioni in ASP.NET Core
  • Come usare il routing degli endpoint in ASP.NET Core 3.0 MVC
  • Come esportare dati in Excel in ASP.NET Core 3.0
  • Come usare LoggerMessage in ASP.NET Core 3.0
  • Come inviare messaggi di posta elettronica in ASP.NET Core
  • Come registrare i dati in SQL Server in ASP.NET Core
  • Come pianificare i processi utilizzando Quartz.NET in ASP.NET Core
  • Come restituire dati dall'API Web ASP.NET Core
  • Come formattare i dati di risposta in ASP.NET Core
  • Come utilizzare un'API Web ASP.NET Core usando RestSharp
  • Come eseguire operazioni asincrone utilizzando Dapper
  • Come usare i flag di funzionalità in ASP.NET Core
  • Come utilizzare l'attributo FromServices in ASP.NET Core
  • Come lavorare con i cookie in ASP.NET Core
  • Come lavorare con file statici in ASP.NET Core
  • Come usare il middleware di riscrittura degli URL in ASP.NET Core
  • Come implementare la limitazione della velocità in ASP.NET Core
  • Come usare Azure Application Insights in ASP.NET Core
  • Utilizzo di funzionalità NLog avanzate in ASP.NET Core
  • Come gestire gli errori nell'API Web ASP.NET
  • Come implementare la gestione delle eccezioni globale in ASP.NET Core MVC
  • Come gestire i valori null in ASP.NET Core MVC
  • Controllo delle versioni avanzato nell'API Web ASP.NET Core
  • Come lavorare con i servizi di lavoro in ASP.NET Core
  • Come utilizzare l'API di protezione dei dati in ASP.NET Core
  • Come usare il middleware condizionale in ASP.NET Core
  • Come lavorare con lo stato della sessione in ASP.NET Core
  • Come scrivere controller efficienti in ASP.NET Core