Programming/.NET

사용자가 요청한 URL에 따라 컨트롤러 내부에 해당하는 액션메서드(Action Method)를 찾아 사용자에게 보여줍니다.

 

public ActionResult Index()
{
    return View();
}

 

액션메서드를 기본적으로 같은 이름의 뷰를 찾기 때문에 액션 메서드가 Index라면 Index.cshtml과 같은 뷰를 렌더하게 됩니다.

 

[ActionName("myIndex")]
public ActionResult MyPage()
{
    return View("MyPage");
}

 

액션 메서드에 ActionName 속성을 사용하게 되면 설정 값에 따라 액션메서드 이름을 재정의하게 됩니다. 따라서 위 예제에서는 MyIndex로 접근시 MyPage 액션메서드를 실행하게 됩니다. 다만 MyIndex로 요청을 받으면 뷰도 기본적으로 MyIndex뷰를 찾게 되므로 MyIndex라는 뷰를 따로 생성하거나 아니면 View 메서드를 호출할때 보여줄 수 있는 다른 뷰를 설정하는 방법으로 적절히 대처해야 합니다.

 

public ActionResult MyPage()
{
    return View();
}

[HttpPost]
public ActionResult MyPage(string idstring name)
{
    return View();
}

 

같은 이름의 액션메서드라도 요청방식에 따라 다른 액션메서드가 호출될 수 있도록 할 수 있습니다. 예제에서는 [HttpPost] 속성을 설정해 두번째 MyPage 액션 메서드는 Post요청에만 응답할 수 있도록 하고 있습니다. 이 외에도 HttpGet이나 HttpPut과 같은 속성을 설정할 수 있습니다.

 

[NonAction]
public ActionResult MyPage(string idstring name)
{
    return View();
}

 

NonAction 속성은 해당 메서드가 액션 메서드로서 인식될 수 없도록 합니다.

 

만약 요청으로 들어온 URL에서 어떤 액션 메서드를 반환해야 할지 찾을 수 없으면 MVC 프레임워크는 기본적으로 HTTP 404 오류를 반환합니다. 하지만 HandleUnknownAction 메서드를 재정의하면 알 수 없는 요청에 대해 다른 대체적인 방법으로 다음과 같이 처리할 수 있습니다.

 

protected override void HandleUnknownAction(string actionName)
{
    Response.Write("Error!!");
}

0 0