반응형
예제를 진행하기에 앞서 이번에는 MVC에서 C를 담당하고 있는 컨트롤러에 대해 얘기를 나누려 합니다.^^
군소리 없이 빠르게(?) 진행하도록 하겠습니다.
컨트롤러?
MVC에서의 컨트롤러는 ASP.NET MVC로 만들어진 웹사이트에서의 요청건에 대한 응답을 담당합니다. 개개의 요청은 개개의 컨트롤러와 매핑이 되죠.
예를 들어 다음의 URL http://localhost/Product/Index/3 로 요청을 하면 ProductController를 호출하게 됩니다. ProductController가 이 요청에 대한 응답을 해야하죠.
ProductController의 내용을 잠깐 보게되면
Controller 클래스에서 파생된 간단한 클래스네요.
ASP.NET MVC 웹사이트의 요청에 응답해줄 컨트롤러를 상속받았으니 이 클래스의 유용한 메쏘드들을 자연스럽게 사용할 수 있겠죠? ㅎㅎ
http://localhost/Product/Index/3 이렇게 입력하게 됐을때, ProductController 가 이 요청건을 담당하게 되고 Index()를 호출하게 됩니다.
이 URL 패턴은 Global.asax에 정의되어 있습니다.
Global.asax 간략소개
처음 애플리케이션이 시작이 되면 Application_Start()가 실행이 됩니다.
그러면 RouteTable.Routes 라는 RouteCollection 개체에 라우팅 설정 정보를 추가하게 됩니다.
MapRoute()가 그 일을 하죠.
소스를 보시면 Default 라는 이름으로 URL과 디폴트값을 세팅해서 추가하는 것을 보실 수 있습니다.
그래서 http://localhost/Product/Index/3 주소는 {controller}/{action}/{id} 과 매핑이 되어 ProductController의 3을 파라미터로 받는 액션메쏘드 Index를 호출하게 되는거죠.
이제 아시겠지만, http://localhost 라고 입력해도 디폴트값인 HomeController 의 Index 액션메쏘드를 호출하게 됩니다.(액션메쏘드는 컨트롤러에서 public 으로 제공되는 메쏘드를 의미합니다.)
Action Result 형식
Product 컨트롤러의 Index() 메쏘드의 반환형을 보면 ActionResult로 되어있습니다.
컨트롤러는 action result라고 불리는 action을 리턴합니다.
이 action result에는 몇가지 타입이 있는데 다음과 같습니다.
| 1.ViewResult – 뷰(HTML) 렌더링 2.EmptyResult – 아무것도 암함 3.RedirectResult – 새로운 URL로 리다이렉트 4.JsonResult – AJAX 애플리케이션에서 사용될 수 있는 JSON 반환 5.JavaScriptResult – 자바스크립트 반환 6.ContentResult – 텍스트 데이터 반환 7.FileContentResult – 파일반환(이진데이터). 8.FilePathResult – 파일반환(파일패스) 9.FileStreamResult – 파일반환(파일스트림) |
이 action result 는 Controller 클래스의 메쏘드로 대신하여 사용됩니다.
| 1.View – ViewResult 반환 2.Redirect – RedirectResult 반환 3.RedirectToAction – RedirectToRouteResult 반환 4.RedirectToRoute – RedirectToRouteResult 반환 5.Json – JsonResult 반환 6.JavaScriptResult – JavaScriptResult 반환 7.Content – ContentResult 반환 8.File – 파라미터에 따른 FileContentResult, FilePathResult, FileStreamResult 반환 |
자. 다음 예제를 잠깐 살펴볼까요?
Content(이것은 ContentResult를 대신합니다)는 View()처럼 html을 리턴하는 것이 아닌 string 을 리턴하게 됩니다. 출력된 결과물을 보면
ㅎㅎ. 단지 텍스트만 출력이 되네요. (주소에 Index를 입력안해도 원하는 결과를 얻을 수 있는건 Global.asax 에 디폴트값으로 Index가 설정되어있기 때문이죠^^)
Index() 메쏘드를 다음과 같이 소스를 수정해도 같은 결과가 출력되는 것을 확인하실 수 있습니다.
ActionResult 가 아닌 것(int, string, DateTime...)을 리턴하게 되면 자동적으로 ContentResult로 감싸서 리턴하게 됩니다.
이번 장은 이걸로 마치고요, 다음은 컨트롤러의 생성과 액션메쏘드에 대해서 알아보겠습니다.
참고자료
http://www.asp.net/learn/mvc/tutorial-03-cs.aspx
반응형
'기술 공부 노트 > MVC Basic' 카테고리의 다른 글
| ASP.NET MVC - View(3) (0) | 2009.12.02 |
|---|---|
| ASP.NET MVC - View(2) (0) | 2009.11.30 |
| ASP.NET MVC - View(1) (2) | 2009.11.23 |
| ASP.NET MVC - Controller(2) (0) | 2009.11.11 |
| MVC - 그 첫시작 (1) | 2009.11.06 |