[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (1)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (2)


이번엔 Controller 에 대해 알아보도록 하겠습니다.

기존의 ASP.NET Web Appliction 의 사용자 상호작용(User interaction)은 Page 를 대상으로 조직화되고 이들 페이지의 Event를 발생시키고, 처리하도록 되어있습니다.
반면에 ASP.NET MVC application에서의 User interaction 은 Controller 들과 Controller 가 포함하고 있는 Action 들로 짜여져 있습니다. ASP.NET MVC framework은 Controller 라고 하는 Class 들과 URL을 연결시켜주는데 Controller 는 들어오는 Request 를 처리하고 사용자들의 입력과 상호작용(interaction)을 다루며,  적절한 application 로직을 실행합니다. Controller 는 Request 에 대한 HTML 을 생성하기 위해서 분리된 View Componet 를 호출합니다. MVC application에서 iew는 단순히 정보만을 표시하며 controller 는 사용자들의 입력과 상호작용을 처리하고 응답합니다.

Controller 생성시 주의할 점은 모든 Controller Class 는 반드시 "Controller" 접미사를 붙여야 합니다. 모든 Controller class 는 iController interface 를 구현하거나 Controller base class 를 상속해야 합니다. Controller 는 Action method 를 정의하고 있고 MVC Web application 의 workflow 에서 Controller 의 action method 는 들어오는 web request 를 처리합니다. 이들 Action mehtod 는  parameter 를 받게 되는데 이들 parameter를 이용하여 application code를 실행시키고 database 로 부터 가져온 data object들을 부려주고 수정하며, Browser 에 뿌려주기 위해 View 를 결정하는 역할을 합니다.
 
그럼 HomeController 가 어떻게 생겼나 살펴보도록 하지요.

    1 <HandleError()> _

    2 Public Class HomeController

    3     Inherits System.Web.Mvc.Controller

    4 

    5     Function Index() As ActionResult

    6         ViewData("Message") = "Welcome to ASP.NET MVC!"

    7 

    8         Return View()

    9     End Function

   10 

   11     Function About() As ActionResult

   12         Return View()

   13     End Function

   14 End Class


클래스 위에 보이는 HandleError() 라는 Attriute filter 는 MVC application 이 동작하다 발생하는 경우 친숙한 에러를 보여주기위해 Controller 나 Action Method 위에 명시적으로 표시해줍니다.

각 Method 명은 요청받은 URL 을 통해 Action 에 연결됩니다. action method 가 호출가능하려면 public 이어야 하고 NonActionAttribute 속성을 가지고 있지 않아야 합니다.

action method 로 사용하려면
  • method 는 반드시 public 이어야 합니다.
  • method 는 static method 일 수 없습니다.
  • method 는 extension method 가 될 수 없습니다.
  • method 는 constructor, getter, setter일 수 없습니다.
  • method 는 generic types을 포함할 수없습니다.
  • method is controller base class의 method 가 아니어야 합니다.
  • method ref 나 out parameter를 가질 수 없습니다.
    등과 같은 제약이 따릅니다.

    Action Method 는 ActionResult instance를 반환해야합니다. action result 는 browser 요청에 대한 응답에서 모든 실행을 마친후에 Controller action 이 반환하는 것입니다.
    ActionResult 에는 View randering, 다른 action 으로의 redirecting, 다른 페이지로의 redirecting 등이 포함됩니다.
    ASP.NET MVC framework 은 다음과 같은 몇가지 타입의 acion result 를 지원합니다.
    ViewResult, EmptyResult, RedirctResult, JsonResult, JavaScriptResult, ContentResult, FileContentResult, FilePathResul, FilestreamResult

    여기서는 ViewResult()를 반환하지 않고 Controller base Class의 View() Method 를 반환하고 있는데 주로 ActionResult 를 직접 반환하지 않고 다음과 같은 Controller base Class 의 Method들중 하나를 반환합니다.
    View(), Redirect(), RedirectToAction(), RedirectoRoute(), Json(), JavaScriptResult(), Content(),File()등입니다.

    그리고 View 에 Data를 전달하기 위해서 위코드에서 보는 바와 같이 Controller base class 의 ViewData Property을 사용할 수 있습니다.
    ViewDtaDictionar 는 대소문자를 구분하는 문자열을 Key로 사용합니다.

    흠...
    대략적인 Controller 의 내용을 살펴봤습니다.

    아래 링크를 통해 더욱 자세한 내용을 살펴보시기 바랍니다.
    http://www.asp.net/mvc/tutorials/asp-net-mvc-controller-overview-cs
    제가 적은 위 내용들은 위 페이지 내용과 hands on lab을 정리한 것입니다.
  • 행복한 고수되십시요.


    woojja ))*
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    반응형

    + Recent posts