[.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)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (4)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (5)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (6)
이번엔 Controller  와 View  를 만들어 보겠습니다.
그림을 그냥 쭉 훑어 보시기만 해도 될 듯합니다.
Solution 탐색기의 Context Menu 도 직관적으로 구성되어 있어서 생성하기도 쉽고요...
그럼 Controller  부터 시작해 보겠습니다.

Controller Folder 를 오른쪽 클릭합니다.


Add/Controller... 를 클릭하여 Controller 를 추가합니다.
새로 만들어질 Controller  의 이름을 입력합니다.
Action Method 를 생성하진 않을 겁니다.

만들어진 Controller 의 내용을 아래와 같이 index 함수와 info 함수를 입력합니다.

    1 Namespace MvcSampleApp

    2 

    3     Public Class CustomerController

    4         Inherits System.Web.Mvc.Controller

    5         Private repository As New AdventureWorksRepository()

    6 

    7         '

    8         ' GET: /Customer

    9 

   10         Function Index() As ActionResult

   11             Return View()

   12         End Function

   13 

   14         Public Function Index(ByVal page As Nullable(Of Integer)) As ActionResult

   15             Dim viewData = New CustomerViewData()

   16             Dim currentPage As Integer = If(page, 0)

   17             viewData.Customers = Me.repository.GetCustomers(currentPage, 10)

   18             viewData.NextPage = currentPage + 1

   19             viewData.PreviousPage = If((currentPage <= 0), 0, currentPage - 1)

   20             Return View(viewData)

   21         End Function

   22 

   23         Public Function Info(ByVal id As Integer) As ActionResult

   24             Dim customer = Me.repository.GetCustomerById(id)

   25             Return View(customer)

   26         End Function

   27 

   28     End Class

   29 

   30 End Namespace


Controller 하나 더 만들어 보죠.
이번엔 Action Method  도 만들어 보죠.


아래와 같은 함수가 기본적으로 만들어질텐데요...
기본적으로 만들어진 함수를 아래와 같이 수정합니다.

    1 Namespace MvcSampleApp

    2 

    3     Public Class AddressController

    4         Inherits System.Web.Mvc.Controller

    5         Private repository As New AdventureWorksRepository()

    6 

    7         '

    8         ' GET: /Address/Create/5

    9         Function Create(ByVal customerId As Integer) As ActionResult

   10             Dim addressViewData = New AddressViewData With

   11                 {

   12                     .CustomerId = customerId

   13                 }

   14             Return View(addressViewData)

   15         End Function

   16 

   17         '

   18         ' POST: /Address/Create

   19         <AcceptVerbs(HttpVerbs.Post)> _

   20         Function Create(ByVal customerId As Integer, ByVal collection As FormCollection) As ActionResult

   21             Try

   22                 Dim addressViewData = New AddressViewData()

   23                 UpdateModel(addressViewData)

   24                 Me.repository.AddAddress(addressViewData.Address, customerId)

   25                 Return RedirectToAction("Info", "Customer", New With {.id = customerId})

   26             Catch

   27                 Return View()

   28             End Try

   29         End Function

   30 

   31         '

   32         ' GET: /Address/Edit/5

   33         Public Function Edit(ByVal addressId As Integer, ByVal customerId As Integer) As ActionResult

   34             Dim addressViewData As New AddressViewData()

   35             addressViewData.Address = Me.repository.GetAddressById(addressId)

   36             addressViewData.CustomerId = customerId

   37             Return View(addressViewData)

   38         End Function

   39 

   40         '

   41         ' POST: /Address/Edit/5

   42         <AcceptVerbs(HttpVerbs.Post)> _

   43         Public Function Edit(ByVal addressId As Integer, ByVal customerId As Integer, ByVal collection As FormCollection) As ActionResult

   44             Try

   45                 Dim addressViewData As New AddressViewData()

   46                 addressViewData.Address = Me.repository.GetAddressById(addressId)

   47                 UpdateModel(addressViewData)

   48                 Me.repository.UpdateAddress()

   49                 Return RedirectToAction("Info", "Customer", New With {.id = customerId})

   50             Catch

   51                 Return View()

   52             End Try

   53         End Function

   54 

   55         '

   56         ' POST: /Address/Edit/5

   57         <HttpPost()> _

   58         Function Edit(ByVal id As Integer, ByVal collection As FormCollection) As ActionResult

   59             Try

   60                 ' TODO: Add update logic here

   61 

   62                 Return RedirectToAction("Index")

   63             Catch

   64                 Return View()

   65             End Try

   66         End Function

   67 

   68         '

   69         ' GET: /Address/Delete/5

   70         Public Function Delete(ByVal addressId As Integer, ByVal customerId As Integer) As ActionResult

   71             Dim address = Me.repository.GetAddressById(addressId)

   72             Me.repository.DeleteAddress(address, customerId)

   73             Return RedirectToAction("Info", "Customer", New With {.id = customerId})

   74         End Function

   75 

   76         '

   77         ' POST: /Address/Delete/5

   78         <HttpPost()> _

   79         Function Delete(ByVal id As Integer, ByVal collection As FormCollection) As ActionResult

   80             Try

   81                 ' TODO: Add delete logic here

   82 

   83                 Return RedirectToAction("Index")

   84             Catch

   85                 Return View()

   86             End Try

   87         End Function

   88     End Class

   89 

   90 End Namespace


이젠 방금전에 만든 CustomerController 의 info 함수에 연결할 View 를 생성할겁니다.
함수상에서 오른쪽 클릭을 하면 나타나는 Context Menu 에서 "Add View..." 를 클릭합니다.
참 쉽죠~~잉? ^^


ComboBox 에서 DataClass를 입력합니다.



만들어진 View 를 아래와 같이 수정합니다.

   40 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

   41     <h2>

   42         Customer Information</h2>

   43     <fieldset>

   44         <p>

   45             CompanyName:

   46             <%= Html.Encode(Model.CompanyName) %>

   47         </p>

   48         <p>

   49             EmailAddress:

   50             <%= Html.Encode(Model.EmailAddress) %>

   51         </p>

   52         <p>

   53             Name:

   54             <%= Html.Encode(Model.Title + " " + Model.FirstName + " " + Model.MiddleName + Model.LastName) %>

   55         </p>

   56         <p>

   57             Phone:

   58             <%= Html.Encode(Model.Phone) %>

   59         </p>

   60     </fieldset>

   61         <h3>

   62         Addresses</h3>

   63     <ul>

   64         <% For Each address In Model.CustomerAddress%>

   65         <li>

   66             <%= address.Address.AddressLine1 + " " + address.Address.AddressLine2 + " - " + address.Address.City %>

   67             <%= Html.ActionLink("(Edit)", "Edit", "Address", New With {address.AddressID, Model.CustomerID}, Nothing)%>

   68             <%= Html.ActionLink("(Delete)", "Delete", "Address", New With {address.AddressID, Model.CustomerID}, Nothing)%>

   69         </li>

   70         <% Next%>

   71     </ul>

   72     <%= Html.ActionLink("Add New Address", "Create", "Address", New With {Model.CustomerID}, Nothing)%>

   73 

   74 </asp:Content>

   75 


CustomerController 와 AddressController 에 포함되어있는 ActionMethod 에 대한 View 를 같은 방식으로 만듭니다.
그 내용은 유사하므로 이곳에 설명하진 않습니다.


F5 를 클릭해서 Web Application을 실행해 봅니다.

Customer 링크를 클릭해서 리스트를 확인하고...
Page 를 이동해 봅니다.
Address 추가도 해보고...

수정/삭제도 해봅니다.


너무 쉬운내용을 어렵게(설명한답시고 캡쳐하고, 주저리주저리) 풀어 놓은것 아닌가 합니다.
어느정도 MVC2 Application 을 작성하는 방식에 대해서 살펴보았습니다.

기본적으로 구성하는 것. 한마디로 참 쉽죠~~잉... ^^'
허지만 세상일이란 기본적인것만 있지 않죠... ㅋㅋ

여튼 이후에는 이 이외에 Unit Test 를 설정하고, Area 를 구성하는 것도 살펴보려합니다.
자세한 사항에 대해서 살펴보기전까지는 기본 구성에 대해서만 진행할려구요...

 
행복한 고수되십시요.


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












저작자 표시 비영리 변경 금지
신고
Posted by woojja
[.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)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (4)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (5)

지난번까지는 ASP.NET MVC2 Application 구성에 대해서 간단하게 살펴보았습니다.
그리고 MVC Application 을 생성했을때 기본적으로 만들어지는 파일들로 Build 까지 해 보았습니다.

이번 부터는 본격적으로 Application 을 만들어 나가려고 하는데요.
지난 아티클에서 만든 기본적인 Web Application 을 바탕으로 이어 나가려고 합니다.

고객들의 List 를 뿌려보고요. 고객 정보를 조회하고 고객의 주소를 생성, 수정, 삭제하는 코드를 작성해 보도록 하겠습니다. 

다음 세 개의 Controller 를 작성할 것입니다. 고객 리스트, 고객정보를 다루는 Controller, 주소를 생성, 수정, 삭제하는 Address Controller 와 마지막으로 Application 의 환영 Page View를 다루는 Home Controller 입니다. 

음 그럼 먼저 master 파일을 아래의 Source 로 변경합니다.

    1 <%@ Master Language="VB" Inherits="System.Web.Mvc.ViewMasterPage" %>

    2 

    3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    4 <html xmlns="http://www.w3.org/1999/xhtml">

    5 <head runat="server">

    6     <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>

    7     <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

    8 </head>

    9 

   10 

   11 <body>

   12     <div class="page">

   13 

   14         <div id="header">

   15             <div id="logo">

   16                     <h1>My MVC Application</h1>

   17             </div>           

   18             <ul id="menu">

   19                 <li>

   20                     <%= Html.ActionLink("Home", "Index", "Home")%>

   21                 </li>

   22                 <li>

   23                     <%= Html.ActionLink("About Us", "About", "Home")%>

   24                 </li>

   25                 <li>

   26                     <%= Html.ActionLink("Customers", "Index", "Customer") %>

   27                 </li>

   28             </ul>

   29         </div>

   30 

   31         <div id="main">

   32             <div id="content">

   33 

   34                 <asp:ContentPlaceHolder ID="MainContent" runat="server" />

   35 

   36             </div>

   37             <div id="footer">

   38                 <p>

   39                     My Sample MVC Application &copy; Copyright 2009

   40                 </p>

   41             </div>

   42         </div>

   43 

   44     </div>

   45 </body>

   46 </html>


그럼 EDM (Entity Data Model) 을 사용하는 것으로부터 시작하겠습니다.

AdventureWorks Entity Data Model 을 추가하도록 하겠습니다.
Models 폴더를 오른쪽 클릭해서 Entity Data Model 을 생성합니다.

파일명은 AdventureWorks.edmx 입니다. 

선택을 하게되면 Entity Data Model Wizard 가 열립니다.
"Generate from database" 항목을 선택합니다.
Connection 정보가 없군요.
그럼 생성을 해 줘야겠죠. "New Connection..." 버튼을 클릭해 줍니다.

SQL Server 를 선택해 주고요. "Continue" 버튼을 클릭합니다.

서버를 선택할 수 있는 창이 뜹니다.
서버를 선택하고 Database 를 선택한 후 연결상태를 테스트 합니다.
그리고 "OK" 버튼을 꾹 눌러주면...

선택한 사항에 대한 내용이 채워져 있습니다.
Connection String 에 대해서는 한번 살펴보셔도 좋을 듯 합니다.
Wizard 를 사용해서 뿐만이 아니라 직접 코딩할때도 쓸수 있을 테니 말이죠.
그리고 Checkbox 의 내용을 보면 Textbox 에 적혀진 이름으로 Web.config 파일에 ConnectionString 정보를 저장하겠느냐 라는 옵션을 달아 놨습니다.
Web.config 파일을 확인해 보셔도 좋을 듯 합니다.

Database 를 선택했으니 사용하려는 Table 을 선택해야겠지요?

과정을 모두 마치게 되면 아래와 같이 Entity Model 이 생성됩니다.
이 파일을 직접 별도의 Text Editor 로 열어보십시요. Address, CustomerAddress, Customer Class 가 만들어 진것을 확인 하실수 있습니다.

이번엔 AdventureWorksRepository 라는 Repository Class 를 생성할 텐데요... 이 Repository 라는 녀석은 방금 생성한 Model 의 Entity 들을 검색하기위한 Mehtod 를 노출하는 역할을 합니다.


아래는 AdventureWorksRepository.vb 파일의 코드입니다.

    1 Public Class AdventureWorksRepository

    2     Private context As New AdventureWorksLT2008R2Entities()

    3 

    4     Public Function GetCustomers(ByVal page As Integer, ByVal size As Integer) As IEnumerable(Of Customer)

    5         Return context.Customer.OrderBy(Function(c) c.CustomerID).Skip(page * size).Take(size)

    6     End Function

    7 

    8     Public Function GetCustomerById(ByVal customerId As Integer) As Customer

    9         Return context.Customer.Include("CustomerAddress.Address").Where(Function(c) c.CustomerID = customerId).First()

   10     End Function

   11 

   12     Public Sub AddAddress(ByVal address As Address, ByVal customerId As Integer)

   13         address.rowguid = Guid.NewGuid()

   14         address.ModifiedDate = DateTime.Now

   15         context.AddObject("Address", address)

   16 

   17         Dim customerAddress As New CustomerAddress()

   18         customerAddress.Address = address

   19         customerAddress.Customer = GetCustomerById(customerId)

   20         customerAddress.rowguid = Guid.NewGuid()

   21         customerAddress.AddressType = "Shipping"

   22         customerAddress.ModifiedDate = DateTime.Today

   23         context.AddObject("CustomerAddress", customerAddress)

   24         context.SaveChanges()

   25     End Sub

   26 

   27     Public Sub UpdateAddress()

   28         context.SaveChanges()

   29     End Sub

   30 

   31     Public Sub DeleteAddress(ByVal address As Address, ByVal customerId As Integer)

   32         Dim customerAddress As CustomerAddress = GetCustomerAddressById(address.AddressID, customerId)

   33         context.DeleteObject(address)

   34         context.DeleteObject(customerAddress)

   35         context.SaveChanges()

   36     End Sub

   37 

   38     Public Function GetAddressById(ByVal addressId As Integer) As Address

   39         Return context.Address.Where(Function(a) a.AddressID = addressId).First()

   40     End Function

   41 

   42     Public Function GetCustomerAddressById(ByVal addressId As Integer, ByVal customerId As Integer) As CustomerAddress

   43         Return context.CustomerAddress.Where(Function(a) a.AddressID = addressId AndAlso a.CustomerID = customerId).First()

   44     End Function

   45 End Class


다음으로는 CustomerController 가 고객 List 를 표시하는데 사용할 ViewData 를 생성할 것입니다.
ViewData 파일들을 저장할 ViewData 폴더를 생성해 줍니다.


CustomerViewData Class 를 생성해줍니다.


다음은 CustomerViewData Class 의 내용입니다.

    1 Public Class CustomerViewData

    2     Public Property Customers As IEnumerable(Of Customer)

    3     Public Property PreviousPage As Integer

    4     Public Property NextPage As Integer

    5 End Class


다음은 AddressController 가 사용할 ViewData를 생성할 것입니다.

다음은 AddressViewData Class 의 내용입니다.

    1 Public Class AddressViewData

    2     Public Property Address As Address

    3     Public Property CustomerId As Integer

    4 End Class


생각외로 이미지를 Capture 를 하면서 설명을 하다보니 내용은 별개 없는데 엄청 기네요...
이렇게 해야하나 싶기도 한데... ㅡㅡ'
그래도 한번은 끝까지 해보려 합니다.

오늘은 Entity Data Model 을 생성하는 방법을 살펴봤구요.
Entity Data Model 이 Entity 를 노출하기위한 Repository Class 를 생성했습니다.
그리고 Controller 가 사용할 ViewData 까지 생성해 보았습니다.

다음은 오늘 생성한 것들을 바탕으로 본격적으루다가 Controller 들과 View 들을 생성해 보겠습니다.


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

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












저작자 표시 비영리 변경 금지
신고
Posted by woojja

[.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)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (4)

이번엔 ASP.NET Routing 에 대해서 살펴볼까 합니다.

ASP.NET MVC Framework 에서는 Controller Class와 Action 에 URL을 연결하기 위해서 ASP.NET Routing 을 사용합니다. ASP.NET Routing 은 여러분이 먼저 정의해 놓은 패턴에 따라 URL 내의 parameter 를 파싱합니다. 그리고 자동적으로 parameter argument 로 Controller Action 에 변수로 전달합니다. 이 과정에서 Web site 내의 특정파일을 연결할 필요는 없습니다.

기본적으로 ASP.NET MVC Project 는 미리 설정된 URL Routing Rule Set 을 가집니다.
새로운 ASP.NET MVC project template 에 의해서 생성되는 Global.asax 의 ASP.NET Application Class 내에 선언된 기본적인 이름 기반(name-based) URL mapping 규칙 set 을 사용하여 개발을 시작할 수 있습니다.
기본적으로 [Controller]/[Action]/[id] 의 패턴을 가지고 있습니다.

우리가 만든 Web Site 를 호출해 보겠습니다. 50000번 포트를 사용하고 있었죠?
http://localhost:50000 를 날립니다. 
안뜬다면... ASP.NET Development Web Server 가 호출되어있나 확인하시고...
아래와 같이 뜹니다.

 우리가 Web Server 에 http://localhost:50000 라는 Request 를 날리면 ASP.NET Routing Engin 은 이 Request 를 가로 채서 기본적으로 등록된 [Controller]/[Action]/[id] 패턴의 Route 를 적용할 것입니다.
그런데 URL 에는 Pattern 에 적용할 내용이 포함되어 있지 않죠?
그럼 Routing Engin은 기본 Controller 와 기본 Action 으로 instance를 생성합니다.
기본 값들은 어떻게 알 수 있냐고요?

Global.asax 파일의 Application Class 를 보면 알 수 있습니다.

    7     Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

    8         routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

    9 

   10         ' MapRoute takes the following parameters, in order:

   11         ' (1) Route name

   12         ' (2) URL with parameters

   13         ' (3) Parameter defaults

   14         routes.MapRoute( _

   15             "Default", _

   16             "{controller}/{action}/{id}", _

   17             New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _

   18         )

   19 

   20     End Sub


17 Line 을 보시면 아시겠죠?

음... 또한가지 알아 두셔야 할 점은 이 RegisterRoutes Method 를 수정해서
 [Controller]/[Action]/[id] 패턴의 Route Rule 을 새롭게 수정하실수 있다는 것입니다.

이번 아티클까지 MVC Framework 을 이용해서 Site 를 제작하는데 필요한 내용을 간략하게 살펴보았고 다음에는 Site를 제작해 보도록 하겠습니다.

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


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












저작자 표시 비영리 변경 금지
신고
Posted by woojja
[.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 ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\












저작자 표시 비영리 변경 금지
신고
Posted by 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 ))*
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\













    저작자 표시 비영리 변경 금지
    신고
    Posted by woojja
    초보강좌를 시작합니다.
    얼마나 갈지 모르지만...

    이제부터 차근차근 내가 좋아하는 방식으로 Site 를 만들어 볼까합니다. ^^

    제 Level 이상이신 분들은 모두 훠~~이, 훠어~~이.
    고수는 가라, 고수는 가라...

    얼렁얼렁 하죠... ^^

    처음은 간단하죠..
    프로젝트를 추가합니다.

    Web을 만들테니까... 왼쪽에서 Web을 선택하시고  가운데 Web Project 리스트에서 ASP.NET MVC2 Web Application 을 선택합니다. 오른쪽에는 선택한 프로젝트에 대한 설명이 나타나내요.
    아랫쪽에 프로젝트이름과 저장할 폴더위치, 솔루션 명을 입력합니다.
    새롭게 폴더를 만들려면 체크박스를 체크해 주시구요...

    이젠 Unit Test 는 기본이죠.
    만들어 주셔요. 아래 이름은 디폴트로 생기죠? 다른 것 넣어주실분은...
    회사나 모임, 또는 개인적으로 사용하시는 Test Framework 이 있으셔서 설치하셨다면 프레임웍을 선택해주시구요... 
    OK 버튼을 누르면 프로젝트가 생성됩니다.

    아래는 새롭게 생성된 MVC2 Application 의 폴더구조입니다.

    이 작업은 해주지 않아도 상관없지만서도
    VisualStudio 에서 기본적으로 제공하는 ASP.NET Development Server 라는 Web Server 에서 웹프로제트를 실행시킬수 있습니다. 그리고 별도의 포트를 지정해 줄수 있습니다. 저는 50,000번으로 설정했습니다.

    F5 버튼을 클릭하게되면 System Tray 에 아이콘이 나타나며 아래와 같이 실행정보를 볼 수 있습니다.

    아래는 새롭게 생성된 MVC2 Application 의 폴더구조입니다.

    요기서 부터는 잠시 다녀와서... ^^

    2편으로 이어집니다.

    행복한 고수되셔요...

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

















    저작자 표시 비영리 변경 금지
    신고
    Posted by woojja
    이전버튼 1 이전버튼

    티스토리 툴바