我正在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
}
}
答案 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" }
});