Filtros de acción en MVC [Tipos de filtros con ejemplos]

Publicado: 2021-03-04

Tabla de contenido

ASP.NET MVC: filtros de acción

En los filtros MVC (Model-View-Controller), usamos la lógica adicional según las diferentes funcionalidades o la lógica del procesamiento de solicitudes de MVC Framework.

Los filtros MVC implementan un proceso para diferentes niveles: por ejemplo, autorización, registro y almacenamiento en caché.

Podemos considerar un filtro de acción como un atributo que podemos implementar en un método de acción del controlador para realizar la modificación según la lógica empresarial.

Podemos considerar filtros MVC del sistema. El atributo se define como la clase, el método, las propiedades y los campos.

Lea también: Proyecto MVC

El marco ASP.NET MVC incorpora varios filtros de acción

Autorizar : este filtro de acción tiene la capacidad de restringir el acceso a un rol de usuario específico.

OutputCache : es el filtro de acción y almacena en caché el resultado de un método de acción del controlador en el tiempo definido.

HandleError : cuando se ejecuta esta acción del controlador, maneja los errores en un escenario particular si el código falla. Le permite crear su filtro de acción personalizado.

Por ejemplo, podemos crear un filtro de acción personalizado para ejecutar un sistema de autenticación personalizado.

Fuente

Canalización de filtro en el flujo del ciclo de vida de solicitud y respuesta:

Fuente

El filtro proporciona dos categorías de implementación de la lógica en el código, realiza diferentes definiciones de interfaz:

  1. Sincrónico
  2. Asincrónico

Los filtros síncronos

En el filtro de sincronización, podemos ejecutar el código antes y después de la canalización cuando se procesa; podemos considerarlo como métodos de acción OnStageExecuting y OnStageExecuted .

Filtros asíncronos

Los filtros asincrónicos se describen con un solo método, que tiene los métodos de

  • EnAcciónEjecutando
  • OnActionExecuted
  • OnActionExecutionAsync

Los fragmentos de código a continuación son el tipo de declaración

clase pública TimestampFilter: IActionFilter, IAsyncActionFilter

{

public void OnActionExecuting (contexto ActionExecutingContext)

{

context.ActionDescriptor.RouteValues[“timestamp”] = DateTime.Now.ToString();

}

public void OnActionExecuted (contexto ActionExecutedContext)

{

var ts = DateTime.Parse(context.ActionDescriptor. RouteValues[“timestamp”]).AddHours(1).ToString();

context.HttpContext.Response.Headers[“X-EXPIRY-TIMESTAMP”] = ts;

}

Tarea pública asíncrona OnActionExecutionAsync (contexto ActionExecutingContext, ActionExecutionDelegate siguiente)

{

this.OnActionExecuting(contexto);

var resultContext = esperar siguiente ();

this.OnActionExecuted(resultContext);

}

}

Tipos de filtros de acción en MVC

El marco ASP.NET MVC mantiene varios filtros:

Filtros de autorización: ejecuta el atributo IAuthorisationFilter.

Filtros de acción: realiza el atributo IActionFilter.

Filtros de resultados : ejecuta el atributo IResultFilter.

Filtros de excepción: ejecuta el atributo IExceptionFilter.

Filtros de autorización

Podemos usarlo para la accesibilidad del usuario y podemos declararlo antes de la implementación del método de acción en el controlador.

El filtro de autorización habilita dos atributos integrados, por ejemplo: Autorizar y Permitir anónimo

Podemos usarlos en lógica personalizada en el código según nuestros requisitos comerciales.

El fragmento de código siguiente es el ejemplo de los filtros de autorización

[Autorizar]

Public ActionResult SecureMethod()

{

volver Ver();

}

[Permitir anónimos]

Resultado de acción público NonSecureMethod()

{

volver Ver();

}

Public ActionResult SecureMethod()

{

volver Ver();

}

Filtros de acción

Podemos describir los filtros de acción antes de realizar el método de acción y después del método de acción.

Contiene dos tipos de métodos.

  1. OnActionExecuted
  2. EnAcciónEjecutando

El fragmento de código siguiente es el ejemplo de filtros de acción

utilizando el sistema;

usando System.Collections.Generic;

utilizando System.Linq;

utilizando System.Web;

utilizando System.Web.Mvc;

espacio de nombres TutorialActionFilter.Filters

{

clase pública Myactionfilter : FilterAttribute,IActionFilter

{

public void OnActionExecuted (ActionExecutedContext filterContext)

{

if (filterContext.HttpContext.Session[“UserID”] != nulo)

{

filterContext.Result = newRedirectResult(“/Inicio/Índice”);

}

demás

{

filterContext.Result = newRedirectResult(“/Iniciar sesión /Iniciar sesión”);

}

}

public void OnActionExecuting (ActionExecutingContext filterContext)

{

if (filterContext.HttpContext.Session[“UserID”] != nulo)

{

filterContext.Result = newRedirectResult(“/Home/ Index”);

}

demás

{

filterContext.Result = newRedirectResult(“/Iniciar sesión /Iniciar sesión”);

}

}

}

}

[TutorialAcciónFiltro]

[AceptarVerbos(HttpVerbs.Get)]

Resultado de la acción pública GetPerson()

{

Persona p = nueva Persona ();

volver Ver(“Persona”,p);

}

Filtros de resultados

Podemos describir los filtros de acción antes de realizar el método de acción y después de que se haya realizado el método de acción.

Contiene dos tipos de métodos.

  1. OnResultExecuted
  2. OnResultExecuting

El fragmento de código a continuación es el ejemplo de filtros de resultados

utilizando el sistema;

usando System.Collections.Generic;

utilizando System.Linq;

utilizando System.Web;

utilizando System.Web.Mvc;

espacio de nombres ResultFilter.Filters

{

clase pública MyResultfilter: FilterAttribute,IResultFilter

{

public void OnResultExecuted(ResultExecutedContext filterContext)

{

if (filterContext.HttpContext.Session[“UserID”] != nulo)

{

filterContext.Result = newRedirectResult(“/Inicio/Contacto”);

}

demás

{

filterContext.Result = newRedirectResult(“/Iniciar sesión/Iniciar sesión”);

}

}

public void OnResultExecuting (ResultExecutingContext filterContext)

{

if (filterContext.HttpContext.Session[“UserID”] != nulo)

{

filterContext.Result = newRedirectResult(“/Inicio/Contacto”);

}

demás

{

filterContext.Result = newRedirectResult(“/Iniciar sesión/Iniciar sesión”);

}

}

}

}

[Mi filtro de resultados]

[AceptarVerbos(HttpVerbs.Get)]

Resultado de la acción pública GetPerson()

{

Persona p = nuevaPersona();

volver Ver(“Persona”,p);

}

Filtros de excepción

Podemos usarlos cuando un controlador o método de acción lanza la excepción.

Este filtro de excepción es importante para capturar la excepción.

A continuación se muestra el fragmento de código para usar filtros de excepción

utilizando el sistema;

usando System.Collections.Generic;

utilizando System.Linq;

utilizando System.Web;

utilizando System.Web.Mvc;

espacio de nombres ExceptionFilter.Filters

{

clase pública MyExceptionFilter: FilterAttribute, IExceptionFilter

{

public void OnException (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = “Filtro ExceptionFilter llamado”;

filterContext.HttpContext.Response.Write(“Filtro ExceptionFilter llamado”);

}

}

}

[MiFiltroDeExcepciones]

Clase pública HomeController: Controlador

{

[AceptarVerbos(HttpVerbs.Get)]

Resultado de la acción pública GetPerson()

{

Persona p = nuevaPersona();

volver Ver(“Persona”,p);

}

}

Lea también: Proyecto Java MVC

Aprenda cursos de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Conclusión

Esperamos que este artículo lo haya ayudado a comprender los filtros de acción en MVC.

Si está interesado en obtener más información sobre el desarrollo de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos y asignaciones, estado de ex alumnos de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.

¿Qué son las estructuras de datos en programación?

Las estructuras de datos son la forma en que organizamos los datos en un programa. Las dos estructuras de datos más importantes son las matrices y las listas enlazadas. Las matrices son la estructura de datos más familiar y es la más fácil de entender. Las matrices son básicamente listas numeradas de elementos relacionados. Son simples de entender y usar, pero no son muy eficientes cuando se trabaja con grandes cantidades de datos. Las listas enlazadas son más complejas, pero pueden ser muy eficientes si se usan correctamente. Son buenas opciones cuando tendrá que agregar o eliminar elementos en medio de una lista grande, o cuando necesite buscar elementos en una lista grande.

¿Cuáles son las diferencias entre la lista enlazada y las matrices?

En las matrices, se utiliza un índice para acceder a un elemento. Los elementos de la matriz se organizan en orden secuencial, lo que facilita el acceso y la modificación de los elementos si se utiliza un índice. Array también tiene un tamaño fijo. Los elementos se asignan en el momento de su creación. En la lista enlazada, se utiliza un puntero para acceder a un elemento. Los elementos de una lista enlazada no se almacenan necesariamente en orden secuencial. Una lista enlazada tiene un tamaño desconocido porque puede contener nodos en el momento de su creación. Se utiliza un puntero para acceder a un elemento, por lo que la asignación de memoria es más fácil.

¿Qué es un puntero en C?

Un puntero es un tipo de dato en C que almacena la dirección de cualquier variable o función. Generalmente se usa como una referencia a otra ubicación de memoria. Un puntero puede contener una dirección de memoria de una matriz, estructura, función o cualquier otro tipo. C usa punteros para pasar valores y recibir valores de funciones. Los punteros se utilizan para asignar dinámicamente espacio de memoria.