Hi guys I’m working on an Asp.net core
project targeted .Net 5
I created a class inherited from IActionFilter
and I used the OnActionExecution
method I did some logic in it and wanna redirect from it to another Action
in a Controller
.
The problem :
The problem is how can I redirect to the action that request
came from and I tried many solution depending on my knowledge but no one succeeds.
What I tried :
public class ValidationFilterAttribute : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
//some logic to get the model
if(!context.ModelState.IsValid)
{
Context.Result = new RedirectToAction(“Idon’t know how to get action”, “I don’t know how to get controller”,new{model= /*model I got*/});
}
}
public void OnActionExecuted(ActionExecutedContext context)
{
}
}
Question : I have two questions,
- How to know the
Action
and theController
names that request came from ? - How can I redirect to the same
Action
but in the sameController
and send the same model gotten in ‘OnActionExecution’
Why I do that :
My Idea is using my own ‘IActionFilter’ class with any method worked in HttpPost
To check if the model
sent is valid or not and if not valid On OnActionExecution
method will add errors
to the model
and resent it again to the action.
Please any help about this issue ?
You can define a custom ActionFilter like this
And then register your filter so it will be applied to every controller and every action in your project
This way before hitting the controller's action method body each request will pass through your
ValidationFilterAttribute
where you can examine hisModel
and change hisModelState
.