net mvc iasyncactionfilter iactionfilter filters example asp asp.net-mvc

asp.net-mvc - mvc - iactionfilter



Return View from ActionFilter (3)

Sí. Mira la fuente de HandleErrorAttribute.

Tengo un ActionFilter que verifica si un parámetro en la URL es válido. Si no es válido, tengo que renderizar una Vista. No quiero redirigir, porque todavía necesito el ActionExecutingContext. ¿Se puede hacer eso?

public override void OnActionExecuting(ActionExecutingContext filterContext) { Guid processIdentifier = (Guid)filterContext.RouteData.Values["processIdentifier"]; //if processIdentifier not found render a view with message and some other objects in ViewData filterContext.Controller.ViewData.ModelState.AddModelError("WrongProcessIdentifier", "The process-id you supplied is not valid"); base.OnActionExecuting(filterContext); }


Prueba esto

[HandleError] public ActionResult MyAction (int id) { // ... }

Y coloque la vista que desea ~/Views/Shared/Error.ascx a ~/Views/Shared/Error.ascx .


HandleErrorAttribute tenía lo que estaba buscando.

filterContext.Result = new ViewResult { ViewName = "MessagePage", ViewData = filterContext.Controller.ViewData, TempData = filterContext.Controller.TempData };