Cómo redirigir una solicitud en ASP.NET Core MVC

ASP.NET Core es un marco multiplataforma, de código abierto, ágil, rápido y modular para crear aplicaciones web de alto rendimiento. Las aplicaciones ASP.NET Core MVC le permiten redirigir una solicitud a una URL específica de varias formas diferentes. Este artículo habla sobre cómo podemos lograr esto con ejemplos de código cuando sea apropiado.

Para trabajar con los ejemplos de código proporcionados en este artículo, debe tener Visual Studio 2019 instalado en su sistema. Si aún no tiene una copia, puede descargar Visual Studio 2019 aquí. 

[También en: Cómo refactorizar objetos de Dios en C #]

Cree un proyecto ASP.NET Core MVC en Visual Studio

En primer lugar, creemos un proyecto ASP.NET Core en Visual Studio 2019. Suponiendo que Visual Studio 2019 esté instalado en su sistema, siga los pasos que se describen a continuación para crear un nuevo proyecto ASP.NET Core en Visual Studio.

  1. Inicie el IDE de Visual Studio.
  2. Haga clic en "Crear nuevo proyecto".
  3. En la ventana "Crear nuevo proyecto", seleccione "Aplicación web ASP.NET Core" de la lista de plantillas que se muestra.
  4. Haga clic en Siguiente.
  5. En la ventana "Configure su nuevo proyecto", especifique el nombre y la ubicación del nuevo proyecto.
  6. Opcionalmente, marque la casilla de verificación “Colocar la solución y el proyecto en el mismo directorio”, según sus preferencias.
  7. Haga clic en Crear.
  8. En la ventana "Crear una nueva aplicación web ASP.NET Core" que se muestra a continuación, seleccione .NET Core como tiempo de ejecución y ASP.NET Core 3.1 (o posterior) de la lista desplegable en la parte superior.
  9. Seleccione "Aplicación web (Modelo-Vista-Controlador)" como plantilla de proyecto para crear una nueva aplicación ASP.NET Core MVC. 
  10. Asegúrese de que las casillas de verificación "Habilitar compatibilidad con Docker" y "Configurar para HTTPS" no estén marcadas, ya que no usaremos esas funciones aquí.
  11. Asegúrese de que la autenticación esté configurada en "Sin autenticación", ya que tampoco usaremos autenticación.
  12. Haga clic en Crear.

Si sigue estos pasos, se creará un nuevo proyecto ASP.NET Core MVC en Visual Studio 2019. Usaremos este proyecto en las secciones siguientes para ilustrar cómo podemos redirigir solicitudes cuando trabajamos con métodos de acción en ASP.NET Core 3.1.

Resultados de la acción de redireccionamiento en ASP.NET Core MVC

Hay varios tipos de resultados de acción en ASP.NET Core MVC, como RedirectResult, RedirectToActionResult, RedirectToRouteResult y LocalRedirectResult. Todas estas clases amplían la clase ActionResult y las interfaces IActionResult e IKeepTempDataResult y devuelven Encontrado (código de estado Http 302), movido permanentemente (código de estado Http 301), redireccionamiento temporal (código de estado Http 307) o redireccionamiento permanente (código de estado Http 308) ).

Examinaremos cómo podemos trabajar con cada uno de estos en esta sección.

Use RedirectResult en ASP.NET Core MVC

Puede utilizar cualquiera de los siguientes métodos para devolver un RedirectResult:

  • Redirigir: código de estado HTTP 302 encontrado (movido temporalmente a la URL proporcionada en el encabezado de la ubicación)
  • RedirectPermanent - Código de estado HTTP 301 movido permanentemente
  • RedirectPermanentPreserveMethod - Código de estado HTTP 308 Redirección permanente
  • RedirectPreserveMethod - Redireccionamiento temporal del código de estado HTTP 307

Las siguientes líneas de código muestran cómo puede utilizar cada uno de estos métodos.

Redirigir ("/ Autor / Índice");
RedirectPermanent ("/ Autor / Índice");
RedirectPermanentPreserveMethod ("/ Autor / Índice");
RedirectPreserveMethod ("/ Autor / Índice");

Alternativamente, puede devolver una instancia de RedirectResult como se muestra en el fragmento de código que se proporciona a continuación.

Public RedirectResult Index ()

{

   devolver nuevo RedirectResult (url: "/ Autor / Índice", permanente: verdadero,

                             preserveMethod: verdadero);

}

Tenga en cuenta que el método Redirect se puede utilizar para redirigir una solicitud a una URL específica. Este método está disponible en la clase base abstracta llamada ControllerBase.

Public RedirectResult Index ()

{

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

}

Cabe señalar que los controladores que crea en ASP.NET Core MVC amplían la clase Controller. Esta clase a su vez extiende la clase ControllerBase e implementa las interfaces IActionFilter, IFilterMetadata, IAsyncActionFilter e IDisposable.

Use RedirectToActionResult en ASP.NET Core MVC

El resultado de esta acción se puede utilizar para redirigir a la acción y al controlador especificados. Si no se especifica ningún controlador, redirige a la acción especificada dentro del controlador actual. Puede utilizar cualquiera de los siguientes métodos para redirigir a la acción especificada y devolver una instancia de RedirectToActionResult de su método de acción.

  • RedirectToAction: código de estado HTTP 302 encontrado (movido temporalmente a la URL proporcionada en el encabezado de la ubicación)
  • RedirectToActionPermanent - Código de estado HTTP 301 movido permanentemente
  • RedirectToActionPermanentPreserveMethod - Código de estado HTTP 308 Redirección permanente
  • RedirectToActionPreserveMethod - Código de estado HTTP 307 Redireccionamiento temporal

El siguiente fragmento de código ilustra cómo se puede utilizar el método RedirectToAction.

índice público RedirectToActionResult ()

{

    return RedirectToAction (actionName: "Índice", controllerName: "Autor");

}

Puede omitir el nombre del controlador si desea redirigir la solicitud a un método de acción en el controlador actual. El siguiente fragmento de código muestra cómo se puede lograr.

índice público RedirectToActionResult ()

{

   return RedirectToAction (actionName: "Privacidad");

}

Use RedirectToRouteResult en ASP.NET Core MVC

Este es otro resultado de acción que se puede utilizar para redirigir la solicitud a la ruta especificada. Puede utilizar cualquiera de los siguientes métodos para devolver una instancia de RedirectToRouteResult desde su método de acción.

  • RedirectToRoute: código de estado HTTP 302 encontrado (movido temporalmente a la URL proporcionada en el encabezado de la ubicación)
  • RedirectToRoutePermanent - Código de estado HTTP 301 movido permanentemente
  • RedirectToRoutePermanentPreserveMethod - Código de estado HTTP 308 Redirección permanente
  • RedirectToRoutePreserveMethod - Código de estado HTTP 307 Redirección temporal

El siguiente fragmento de código muestra cómo se puede utilizar el método RedirectToRoute.

índice público RedirectToRouteResult ()

{

    return RedirectToRoute ("autor");

}

También puede especificar el valor de la ruta al redireccionar, como se muestra en el fragmento de código que se proporciona a continuación.

var routeValue = new RouteValueDictionary

 (nuevo {acción = "Ver", controlador = "Autor"});

return RedirectToRoute (routeValue);

Use LocalRedirectResult en ASP.NET Core MVC

El resultado de esta acción se utiliza cuando desea redirigir a una URL local. Lanza una InvalidOperationException si usa una URL externa con ella. Puede utilizar cualquiera de los siguientes métodos para devolver una instancia de LocalRedirectResult de su método de acción.

  • LocalRedirect: código de estado HTTP 302 encontrado (movido temporalmente a la URL proporcionada en el encabezado de la ubicación)
  • LocalRedirectPermanent - Código de estado HTTP 301 movido permanentemente
  • LocalRedirectPermanentPreserveMethod - Código de estado HTTP 308 Redirección permanente
  • LocalRedirectPreserveMethod - Redirección temporal del código de estado HTTP 307

Redirigir a páginas de afeitar en ASP.NET Core MVC

Por último, tenga en cuenta que incluso puede redirigir a las páginas de la maquinilla de afeitar utilizando el método RedirectToPage, especificando la página de la maquinilla de afeitar de destino a la que redirigir la solicitud. El método RedirectToPage devuelve una instancia de RedirectToPageResult junto con un código de estado HTTP 302.

Si tiene una página llamada Autor, a la que desea que se redirija la solicitud, puede utilizar el siguiente fragmento de código.

public IActionResult RedirectToAuthorPage ()

{

    return RedirectToPage ("Autor");

}

Cómo hacer más en ASP.NET Core:

  • Cómo usar el enrutamiento de atributos en ASP.NET Core
  • Cómo pasar parámetros a métodos de acción en ASP.NET Core MVC
  • Cómo usar los analizadores de API en ASP.NET Core
  • Cómo usar tokens de datos de ruta en ASP.NET Core
  • Cómo usar el control de versiones de API en ASP.NET Core
  • Cómo usar objetos de transferencia de datos en ASP.NET Core 3.1
  • Cómo manejar errores 404 en ASP.NET Core MVC
  • Cómo usar la inyección de dependencia en filtros de acción en ASP.NET Core 3.1
  • Cómo usar el patrón de opciones en ASP.NET Core
  • Cómo usar el enrutamiento de punto final en ASP.NET Core 3.0 MVC
  • Cómo exportar datos a Excel en ASP.NET Core 3.0
  • Cómo usar LoggerMessage en ASP.NET Core 3.0
  • Cómo enviar correos electrónicos en ASP.NET Core
  • Cómo registrar datos en SQL Server en ASP.NET Core
  • Cómo programar trabajos usando Quartz.NET en ASP.NET Core
  • Cómo devolver datos de ASP.NET Core Web API
  • Cómo formatear los datos de respuesta en ASP.NET Core
  • Cómo consumir una API web ASP.NET Core con RestSharp
  • Cómo realizar operaciones asíncronas usando Dapper
  • Cómo usar marcas de características en ASP.NET Core
  • Cómo usar el atributo FromServices en ASP.NET Core
  • Cómo trabajar con cookies en ASP.NET Core
  • Cómo trabajar con archivos estáticos en ASP.NET Core
  • Cómo utilizar Middleware de reescritura de URL en ASP.NET Core
  • Cómo implementar la limitación de velocidad en ASP.NET Core
  • Cómo usar Azure Application Insights en ASP.NET Core
  • Uso de funciones avanzadas de NLog en ASP.NET Core
  • Cómo manejar errores en ASP.NET Web API
  • Cómo implementar el manejo de excepciones global en ASP.NET Core MVC
  • Cómo manejar valores nulos en ASP.NET Core MVC
  • Control de versiones avanzado en ASP.NET Core Web API
  • Cómo trabajar con servicios de trabajador en ASP.NET Core
  • Cómo usar la API de protección de datos en ASP.NET Core
  • Cómo usar middleware condicional en ASP.NET Core
  • Cómo trabajar con el estado de la sesión en ASP.NET Core
  • Cómo escribir controladores eficientes en ASP.NET Core