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