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");
}