自定义操作过滤器

时间:2018-05-08 05:21:31

标签: c# asp.net-mvc

我正在asp.net MVC 5中创建自定义过滤器,我正在尝试重定向到方法On Action Executing中的特定控制器我尝试Redirect To Action并且它没有任何建议吗? 我在web api控制器中使用此过滤器 这是我的代码:

public override void OnActionExecuting(HttpActionContext actionContext)
{
    Uri MyUrl = actionContext.Request.RequestUri;
    var host = MyUrl.Host;

    if (host == "localhost")
    {
       // redirect should be here
    }
}

2 个答案:

答案 0 :(得分:4)

对于WebApi,您可以使用HttpActionContext.Response Property

public override void OnActionExecuting(HttpActionContext actionContext)
{
    var response = actionContext.Request.CreateResponse(HttpStatusCode.Redirect);
    response.Headers.Location = new Uri("https://www.example.com");
    actionContext.Response = response;
 }

答案 1 :(得分:1)

如果您使用MVC 5.2.3,则操作过滤器应如下所示。

 public class CustomActionFilter : ActionFilterAttribute, IActionFilter
    {
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {

        }
    }

要重定向到某个操作,您可以使用以下代码。

 filterContext.Result =
            new RedirectToRouteResult(
                   new RouteValueDictionary
                        {
                            { "controller", "ControllerName" },
                            { "action", "Action" }
                        });