[ASP.NET MVC 4] Redirect
특정 URL에 대해서 Redirect 하는 방법은 아래와 같다.
Response.Redirect(“ControllerName/ActionName”);
또는
return RedirectToAction(“ActionName“, “ControllerName“);
하지만, 존재하지않은 Controller 라면?
오류로 떨어질것이다.
그럼 어떻게 할것인가?
가령, url이 너무 길어서 줄여달라는 요구사항이 들어올 때 처리하는 방법이다.
Global.asax.cs 파일을 열고 Application_Error() 메소드를 찾아 빨간색 표기한 부분을 추가해준다.
var httpContext = ((MvcApplication)sender).Context;
var currentController = string.Empty;
var currentAction = string.Empty;
var currentRouteData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));
if (currentRouteData != null)
{
if (currentRouteData.Values[“controller”] != null && !string.IsNullOrEmpty(currentRouteData.Values[“controller”].ToString()))
{
currentController = currentRouteData.Values[“controller”].ToString();
}
if (currentRouteData.Values[“action”] != null && !String.IsNullOrEmpty(currentRouteData.Values[“action”].ToString()))
{
currentAction = currentRouteData.Values[“action”].ToString();
}
}
원하는 경로로 리다이렉션 처리를 해준다.
if (currentController.Equals(“direct”))
{
httpContext.ClearError();
httpContext.Response.Clear();
httpContext.Response.StatusCode = 200;
Response.Redirect(“/account/signup”);
}