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

이번엔 View 를 살펴보도록 하겠습니다.

View 는 MVC application 에서 View 는 application 의 User interface 를 표시하기위한 응답가능한 Component 로 presentation logic 을 은닉화하기 위한 용도로만 존재합니다. 그래서 View 는 어떤 application logic 이나 데이터 검색 코드는 포함하지 않아야 합니다. View 는 Controller 가 제공하는 MVC view와 관련된 data object인 View Data Class를 이용해서 적합한 UI 를 만듭니다.

View 는 .aspx, ascx 와 .master 뿐만아니라 View 를 rendering 하는데 관련된 다른 파일들을 사용합니다. 그리고 Views 폴더는 각 Controller 용 View 폴더를 포함하고 있으며 Controller 의 접두어를 사용합니다.

아래와 같이 말이죠...


Views Folder 내에 AccountController, HomeCotroller 들에 해당하는 Account, Home 폴더가 있음을 확인할 수 있습니다.

View template은 기본적으로 Code behind 파일이 없습니다.


행복한 고수되십시요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형
[.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 ))*
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    반응형
    [.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (1)

    먼저 프로젝트를 구성하는 각 폴더에 대해서 살펴보려 합니다.


    • App_Data : Data file 을 담아 놓는 폴더입니다.
    • Content : CSS 파일이나 image 같은 정적인 파일들을 저장하는 폴더죠.
    • Controllers : 폴더 명을 보면 알 수 있죠? Controller Class들을 담아 놓는 폴덥니다.
      잠시후에 다시 설명을 하겠지만 Controller 는 MVC 기반의 application 에서 사용자 상호작용을 처리한다거나 데이터를 조작한다거나, UI를 표시할 View 를 선택하는데 사용되는 component 라고 할 수 있습니다.
      MVC Framework 에서는 모든 컨트롤로의 접미사로 Controller 를 붙여야 한다는거... 잊지마셔요.
    • Models : MVC Web application 에서 사용하는 application model 들을 담아 놓는 폴더입니다. 주로 Object를 정의하고 데이터 저장소 작업을 위한 로직을 정의한 코드를 포함하고 있습니다.
    • Scripts : 말그대로 JavaScript 파일을 저장합니다.
    • Views : View 파일을 담는 걸 추천하죠. View 는 application의 User interface를 표시하는  component 라고 할 수 있습니다. View 로는 .aspx, .ascx 와 .master 파일과 View 를 만들어 내는 기타 파일들이라 하겠습니다. View 폴더는 각 Controller 를 위한 폴더를 포함하고 있는데 폴더명은  Controller의 접두어를 사용합니다. 위 그림에서 보시면 Views 폴더내에 Account, Home 폴더가 있는 것을 보실 수 있습니다.
      그리고 그 내부에는 기본적으로 Shared 폴더가 생성되는데 여러 controller 에서 공통적으로 사용하는 .master 파일과 같은 View 가 포함되어있습니다. 
    • Global.asax : MVC Web application 이 사용하는 기본적인 URL Routing을 포함한 전역적인(global 한) 항목들에 대한 코드가 담겨 있습니다.  
    • Web.config : application 설정 정보를 담고 있습니다.

    여기까지는 MVC Web Application 을 구성하는 폴더에 대한 설명이었습니다.

    다음은 Controller, Model, View 에 대한 사항들을 하나하나 설명하기로 하겠습니다.



    행복한 고수되셔요.

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

    반응형

    + Recent posts