이번 시간 부터는 MVC의 기본기능 보다는 트러블 슈팅이나 , 팁에 대한 내용을 주로 다루어 보도록 하겠습니다.


MVC를 사용할 때 몇몇 개의 기능은 기존 ASP.NET Classic 보다 부족하다고 느껴질 수 있습니다. 특히나 사용자가 어떠한 페이지를 생성해야 할 때 반드시 그에 매칭되는 Action 을 만들어야 하하는 것 디자이너와의 협업에서 상당한 불편함을 가져올 수 있습니다. 이는 MVC 초반부터 항상 제기되어 오던 문제이며 , MVC의 개발상의 약점으로 손꼽히곤 했습니다. 이번시간에는 간단하게 나마 이러한 문제점들을 해결하기 위한 방법을 공유하고자 합니다.

 

 

HandleUnknownAction?

 

HandleUnknownAction 은 컨트롤러에서 Action 에 대한 요청을 받았을 때 해당 액션이 없으면 호출되는 메서드 입니다. 이 메서드가 구현되지 않았을 때 사용자는 다음과 같은 에러를 보게 됩니다.

 


 19_1.png
[그림 : ActionResult 없기 때문에 404 에러를 반환하는 모습]

 

 

흔히 볼수 있는 404 Error 입니다. 하지만 Test폴더에는 여전히 Test.cshtml 이 존재하는 상태입니다. 이제 이것을 HandleUnknownAction 을 이용해서 나타나게 하겠습니다.

 

protected override void HandleUnknownAction(string actionName)

{

   this.View(actionName).ExecuteResult(this.ControllerContext);

}


해당 메서드를 실행하게 되면 ActionName을 받았을 때 해당 컨트롤러를 이용해서 View를 즉 ActionResult 의 실행 없이 실행되게 됩니다.

 

 19_2.png
[그림 : ActionResult 없이 View를 호출]

 

 

Summary
웹 개발에서 협업이라는 이슈는 가장 오래되고 진부하지만 중요한 이슈입니다. 그 중심에는 컴파일이라는 복병이 숨어 있게 되는데 , 이 문제 때문에 디자이너가 자신이 만든 파일을 볼수 없다면 이 또한 답답한 일일 것입니다. HandleUnknownAction은 이러한 문제를 해결하는데 아주 유용하며 , 또한 다른 에러를 처리하기도 용이합니다. 다음장에서는 ActionFilter 를 응용한 사례를 소개하도록 하겠습니다.



ASP.NET MVC3 시리즈 강좌 리스트
[ASP.NET MVC3강좌] 1. MVC(Model- View – Controller) 란 무엇인가.
[ASP.NET MVC3강좌] 2. MVC 환경 세팅
[ASP.NET MVC3강좌] 3. HelloWorld MVC
[ASP.NET MVC3강좌] 4. Layout , Partial Page
[ASP.NET MVC3강좌] 5. Model 을 View에서 표현하기
[ASP.NET MVC3강좌] 6. MVC의 매력적인 기능 스캐폴딩!(With EF)
[ASP.NET MVC3강좌] 7. 유효성 검사
[ASP.NET MVC3강좌] 8. ModelBinder
[ASP.NET MVC3강좌] 9. MVC ActionResult 종류 살펴보기
[ASP.NET MVC3강좌] 10. MVC 처리 프로세스 & ActionFilter
[ASP.NET MVC3강좌] 11. Global.asax
[ASP.NET MVC3강좌] 12. (번외편) Repository Pattern
[ASP.NET MVC3강좌] 13. MEF(Managed Extensibility Framework) in MVC
[ASP.NET MVC3강좌] 14. Javascript in MVC
[ASP.NET MVC3강좌] 15. Javascript Intellicense in Visual Studio
[ASP.NET MVC3강좌] 16. JSON in MVC - 1
[ASP.NET MVC3강좌] 17. JSON in MVC - 2
[ASP.NET MVC3강좌] 18. HTML5 in MVC
[ASP.NET MVC3강좌] 19. MVC Tips 1 - HandleUnknownAction
[ASP.NET MVC3강좌] 20. MVC Tips 2 - Cache ActionFilter





profile

ASP.NET MVP 2009~2011