onactionexecuted net mvc iactionfilter filters asp asp.net-mvc action-filter

asp.net-mvc - mvc - net core exception filter



¿Cómo saltarse la ejecución de acción de un ActionFilter? (3)

Puede usar filterContext.Result para esto. Debe tener un aspecto como este:

public override void OnActionExecuting(ActionExecutingContext filterContext) { //Check your condition here if (true) { //Create your result filterContext.Result = new EmptyResult(); } else base.OnActionExecuting(filterContext); }

¿Es posible omitir la ejecución de todo el método de acción y devolver un ActionResult específico cuando se ActionResult una condición determinada en OnActionExecuting ?


Puedes usar el siguiente código aquí.

public override void OnActionExecuting(ActionExecutingContext filterContext) { ... if (needToRedirect) //your condition here { ... filterContext.Result = new RedirectToAction(string action, string controller) return; } ... }

RedirectToAction te redirigirá a la acción específica en función de la condición.


Vea mi ejemplo de descarga y el artículo de MSDN Filtrado en ASP.NET MVC .

Puede cancelar la ejecución del filtro en los métodos OnActionExecuting y OnResultExecuting estableciendo la propiedad Result en un valor no nulo.

OnActionExecuted OnActionExecuting filtros pendientes de OnActionExecuted y OnActionExecuting y el invocador no invocará el método OnActionExecuted para el filtro cancelado o para los filtros pendientes.

Se OnActionExecuted filtro OnActionExecuted para los filtros ejecutados previamente. Se OnResultExecutingand OnResultExecuted filtros OnResultExecutingand OnResultExecuted .

El siguiente código del ejemplo muestra cómo devolver un ActionResult específico cuando se ActionResult una determinada condición en OnActionExecuting :

if (filterContext.RouteData.Values.ContainsValue("Cancel")) { filterContext.Result = new RedirectResult("~/Home/Index"); Trace.WriteLine(" Redirecting from Simple filter to /Home/Index"); }