다음을 통해 공유


ASP.NET MVC를 사용하여 15분만에 영화 데이터베이스 애플리케이션 만들기(C#)

작성자: 스티븐 월더

코드 다운로드

Stephen Walther는 처음부터 끝까지 전체 데이터베이스 기반 ASP.NET MVC 애플리케이션을 빌드합니다. 이 자습서는 ASP.NET MVC Framework를 처음으로 사용하고 ASP.NET MVC 애플리케이션을 빌드하는 프로세스를 이해하려는 사용자를 위한 훌륭한 소개입니다.

이 자습서의 목적은 ASP.NET MVC 애플리케이션을 빌드하는 데 "어떤 모습인지"를 알려주는 것입니다. 이 자습서에서는 처음부터 끝까지 전체 ASP.NET MVC 애플리케이션을 빌드합니다. 데이터베이스 레코드를 나열, 만들기 및 편집하는 방법을 보여 주는 간단한 데이터베이스 기반 애플리케이션을 빌드하는 방법을 보여 줍니다.

애플리케이션 빌드 프로세스를 간소화하기 위해 Visual Studio 2008의 스캐폴딩 기능을 활용합니다. Visual Studio에서 컨트롤러, 모델 및 뷰에 대한 초기 코드 및 콘텐츠를 생성할 수 있습니다.

Active Server Pages 또는 ASP.NET 작업한 경우 MVC를 매우 잘 ASP.NET. ASP.NET MVC 보기는 Active Server Pages 애플리케이션의 페이지와 매우 비슷합니다. 또한 기존 ASP.NET Web Forms 애플리케이션과 마찬가지로 ASP.NET MVC는 .NET 프레임워크에서 제공하는 풍부한 언어 및 클래스 집합에 대한 모든 권한을 제공합니다.

이 자습서를 통해 ASP.NET MVC 애플리케이션을 빌드하는 환경이 Active Server Pages 또는 ASP.NET Web Forms 애플리케이션을 빌드하는 환경과 유사하고 다른 방식을 이해할 수 있기를 바랍니다.

동영상 데이터베이스 애플리케이션 개요

우리의 목표는 작업을 단순하게 유지하는 것이기 때문에 매우 간단한 Movie Database 애플리케이션을 빌드합니다. 간단한 Movie Database 애플리케이션을 사용하면 다음 세 가지 작업을 수행할 수 있습니다.

  1. 동영상 데이터베이스 레코드 집합 나열
  2. 새 영화 데이터베이스 레코드 만들기
  3. 기존 동영상 데이터베이스 레코드 편집

마찬가지로 간단하게 유지하려고 하므로 애플리케이션을 빌드하는 데 필요한 ASP.NET MVC 프레임워크의 최소 기능 수를 활용합니다. 예를 들어 테스트 기반 개발은 활용하지 않습니다.

애플리케이션을 만들려면 다음 단계를 각각 완료해야 합니다.

  1. ASP.NET MVC 웹 애플리케이션 프로젝트 만들기
  2. 데이터베이스 생성
  3. 데이터베이스 모델 만들기
  4. ASP.NET MVC 컨트롤러 만들기
  5. ASP.NET MVC 보기 만들기

준비 단계

ASP.NET MVC 애플리케이션을 빌드하려면 Visual Studio 2008 또는 Visual Web Developer 2008 Express가 필요합니다. 또한 ASP.NET MVC 프레임워크를 다운로드해야 합니다.

Visual Studio 2008을 소유하지 않은 경우 이 웹 사이트에서 90일 평가판 버전의 Visual Studio 2008을 다운로드할 수 있습니다.

https://msdn.microsoft.com/vs2008/products/cc268305.aspx

또는 Visual Web Developer Express 2008을 사용하여 ASP.NET MVC 애플리케이션을 만들 수 있습니다. Visual Web Developer Express를 사용하기로 결정한 경우 서비스 팩 1이 설치되어 있어야 합니다. 다음 웹 사이트에서 Visual Web Developer 2008 Express with Service Pack 1을 다운로드할 수 있습니다.

https://www.microsoft.com/downloads/details.aspx?FamilyId=BDB6391C-05CA-4036-9154-6DF4F6DEBD14& displaylang=en

Visual Studio 2008 또는 Visual Web Developer 2008을 설치한 후 ASP.NET MVC 프레임워크를 설치해야 합니다. 다음 웹 사이트에서 ASP.NET MVC 프레임워크를 다운로드할 수 있습니다.

https://www.asp.net/mvc/

참고 항목

ASP.NET 프레임워크 및 ASP.NET MVC 프레임워크를 개별적으로 다운로드하는 대신 웹 플랫폼 설치 관리자를 활용할 수 있습니다. 웹 플랫폼 설치 관리자는 컴퓨터에 설치된 애플리케이션을 쉽게 관리할 수 있는 애플리케이션입니다.

ASP.NET MVC 웹 애플리케이션 프로젝트 만들기

먼저 Visual Studio 2008에서 새 ASP.NET MVC 웹 애플리케이션 프로젝트를 만들어 보겠습니다. 메뉴 옵션 파일, 새 프로젝트를 선택하면 그림 1에 새 프로젝트 대화 상자가 표시됩니다. 프로그래밍 언어로 C#을 선택하고 ASP.NET MVC 웹 애플리케이션 프로젝트 템플릿을 선택합니다. 프로젝트에 MovieApp이라는 이름을 지정하고 확인 단추를 클릭합니다.

ASP 점 Net MVC 웹 애플리케이션 템플릿이 선택되고 이름 필드에 동영상 앱이 표시되는 새 프로젝트 대화 상자의 스크린샷

그림 01: 새 프로젝트 대화 상자(전체 크기 이미지를 보려면 클릭)

새 프로젝트 대화 상자의 맨 위에 있는 드롭다운 목록에서 .NET Framework 3.5를 선택하거나 ASP.NET MVC 웹 애플리케이션 프로젝트 템플릿이 표시되지 않는지 확인합니다.

새 MVC 웹 애플리케이션 프로젝트를 만들 때마다 Visual Studio는 별도의 단위 테스트 프로젝트를 만들라는 메시지를 표시합니다. 그림 2의 대화 상자가 나타납니다. 시간 제약 조건으로 인해 이 자습서에서 테스트를 만들지 않으므로(그리고 이에 대해 약간 죄책감을 느껴야 합니다) 아니요 옵션을 선택하고 확인 단추를 클릭합니다.

참고 항목

Visual Web Developer는 테스트 프로젝트를 지원하지 않습니다.

아니요를 보여주는 단위 테스트 프로젝트 만들기의 스크린샷은 선택된 단위 테스트 프로젝트를 만들지 않습니다.

그림 02: 단위 테스트 프로젝트 만들기 대화 상자(전체 크기 이미지를 보려면 클릭)

ASP.NET MVC 애플리케이션에는 모델, 뷰 및 컨트롤러 폴더와 같은 표준 폴더 집합이 있습니다. 솔루션 탐색기 창에서 이 표준 폴더 집합을 볼 수 있습니다. Movie Database 애플리케이션을 빌드하려면 각 모델, 뷰 및 컨트롤러 폴더에 파일을 추가해야 합니다.

Visual Studio를 사용하여 새 MVC 애플리케이션을 만들 때 샘플 애플리케이션을 가져옵니다. 처음부터 시작하려면 이 샘플 애플리케이션의 콘텐츠를 삭제해야 합니다. 다음 파일과 다음 폴더를 삭제해야 합니다.

  • Controllers\HomeController.cs
  • Views\Home

데이터베이스 만들기

영화 데이터베이스 레코드를 보관할 데이터베이스를 만들어야 합니다. 다행히 Visual Studio에는 SQL Server Express라는 무료 데이터베이스가 포함되어 있습니다. 다음 단계에 따라 데이터베이스를 만듭니다.

  1. 솔루션 탐색기 창에서 App_Data 폴더를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션인 새 항목 추가를 선택합니다.
  2. 데이터 범주를 선택하고 SQL Server 데이터베이스 템플릿을 선택합니다(그림 3 참조).
  3. 새 데이터베이스 MoviesDB.mdf 이름을 지정하고 추가 단추를 클릭합니다.

데이터베이스를 만든 후 App_Data 폴더에 있는 MoviesDB.mdf 파일을 두 번 클릭하여 데이터베이스에 연결할 수 있습니다. MoviesDB.mdf 파일을 두 번 클릭하면 서버 탐색기 창이 열립니다.

참고 항목

서버 탐색기 창의 이름은 Visual Web Developer의 경우 데이터베이스 탐색기 창으로 지정됩니다.

SQL Server 데이터베이스가 선택되고 이름 상자에 Movies DB dot m d f가 입력되어 있는 새 항목 추가 창의 스크린샷

그림 03: Microsoft SQL Server 데이터베이스 만들기(전체 크기 이미지를 보려면 클릭)

다음으로 새 데이터베이스 테이블을 만들어야 합니다. 세버 탐색기 창에서 테이블 폴더를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션 새 테이블 추가를 선택합니다. 이 메뉴 옵션을 선택하면 데이터베이스 테이블 디자이너가 열립니다. 다음 데이터베이스 열을 만듭니다.

열 이름 데이터 형식 Null 허용
ID 정수 False
타이틀 Nvarchar (100) False
담당 이사 Nvarchar (100) False
DateReleased DateTime False

첫 번째 열인 ID 열에는 두 개의 특수 속성이 있습니다. 먼저 ID 열을 기본 키 열로 표시해야 합니다. ID 열을 선택한 후 기본 키 설정 단추(키처럼 보이는 아이콘)를 클릭합니다. 둘째, ID 열을 ID 열로 표시해야 합니다. 열 속성 창 ID 사양 섹션까지 아래로 스크롤하여 확장합니다. Is Identity 속성을 Yes으로 변경합니다. 완료되면 표가 그림 4와 같이 표시됩니다.

완료된 Movies 데이터베이스 테이블과 Is Identity 속성이 Yes로 설정된 것을 보여주는 Microsoft Visual Studio의 스크린샷.

그림 04: Movies 데이터베이스 테이블(전체 크기 이미지를 보려면 클릭)

마지막 단계는 새 테이블을 저장하는 것입니다. 저장 단추(플로피 아이콘)를 클릭하고 새 테이블에 Movies라는 이름을 지정합니다.

테이블 만들기를 완료한 후 일부 동영상 레코드를 테이블에 추가합니다. 서버 탐색기 창에서 Movies 테이블을 마우스 오른쪽 단추로 클릭하고 테이블 데이터 표시 메뉴 옵션을 선택합니다. 즐겨 찾는 영화 목록을 입력합니다(그림 5 참조).

ID, 타이틀, 디렉터 및 릴리스 날짜를 비롯한 영화 정보를 입력하기 위한 테이블을 보여주는 Microsoft Visual Studio 창의 스크린샷.

그림 05: 영화 레코드 입력(전체 크기 이미지를 보려면 클릭)

모델 만들기

다음으로 데이터베이스를 나타내는 클래스 집합을 만들어야 합니다. 데이터베이스 모델을 만들어야 합니다. Microsoft Entity Framework를 활용하여 데이터베이스 모델에 대한 클래스를 자동으로 생성합니다.

참고 항목

ASP.NET MVC 프레임워크는 Microsoft Entity Framework에 연결되지 않습니다. LINQ to SQL, Subsonic 및 NHibernate를 비롯한 다양한 OR/M(개체 관계형 매핑) 도구를 활용하여 데이터베이스 모델 클래스를 만들 수 있습니다.

다음 단계에 따라 엔터티 데이터 모델 마법사를 시작합니다.

  1. 솔루션 탐색기 창에서 Models 폴더를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션 추가, 새 항목을 선택합니다.
  2. 데이터 범주를 선택하고 ADO.NET 엔터티 데이터 모델 템플릿을 선택합니다.
  3. 데이터 모델에 MoviesDBModel.edmx라는 이름을 지정하고 추가 단추를 클릭합니다.

추가 단추를 클릭하면 엔터티 데이터 모델 마법사가 나타납니다(그림 6 참조). 다음 단계에 따라 마법사를 완료합니다.

  1. 모델 콘텐츠 선택 단계에서 데이터베이스에서 생성 옵션을 선택합니다.
  2. 데이터 연결 선택 단계에서 연결 설정에 대해 MoviesDB.mdf 데이터 연결 및 MoviesDBEntities 이름을 사용합니다. 다음 단추를 클릭합니다.
  3. 데이터베이스 개체 선택 단계에서 테이블 노드를 확장하고 Movies 테이블을 선택합니다. 네임스페이스 MovieApp.Models를 입력하고 마침 단추를 클릭합니다.

선택한 데이터베이스에서 생성 아이콘을 보여주는 엔터티 데이터 모델 마법사 상자의 스크린샷.

그림 06: 엔터티 데이터 모델 마법사를 사용하여 데이터베이스 모델 생성(전체 크기 이미지를 보려면 클릭)

엔터티 데이터 모델 마법사를 완료하면 엔터티 데이터 모델 디자이너가 열립니다. 디자이너는 Movies 데이터베이스 테이블을 표시해야 합니다(그림 7 참조).

Movies 데이터베이스 테이블을 보여주는 엔터티 데이터 모델 디자이너의 스크린샷

그림 07: 엔터티 데이터 모델 디자이너(전체 크기 이미지를 보려면 클릭)

우리는 계속하기 전에 한 가지 변화를 만들어야 합니다. 엔터티 데이터 마법사는 Movies 데이터베이스 테이블을 나타내는 Movies라는 모델 클래스를 생성합니다. Movies 클래스를 사용하여 특정 영화를 나타내기 때문에 클래스의 이름을 영화 대신 영화로 수정해야 합니다(복수형이 아닌 단수).

디자이너 화면에서 클래스의 이름을 두 번 클릭하고 클래스 이름을 Movies에서 Movie로 변경합니다. 이렇게 변경한 후 저장 단추(플로피 디스크의 아이콘)를 클릭하여 Movie 클래스를 생성합니다.

ASP.NET MVC 컨트롤러 만들기

다음 단계는 ASP.NET MVC 컨트롤러를 만드는 것입니다. 컨트롤러는 사용자가 ASP.NET MVC 애플리케이션과 상호 작용하는 방식을 제어합니다.

다음 단계를 수행합니다.

  1. 솔루션 탐색기 창에서 Controllers 폴더를 마우스 오른쪽 단추로 클릭하고 추가, 컨트롤러 메뉴 옵션을 선택합니다.
  2. 컨트롤러 추가 대화 상자에서 HomeController라는 이름을 입력하고 만들기, 업데이트 및 세부 정보 시나리오에 대한 작업 메서드 추가 확인란을 선택합니다(그림 8 참조).
  3. 추가 단추를 클릭하여 프로젝트에 새 컨트롤러를 추가합니다.

이러한 단계를 완료하면 목록 1의 컨트롤러가 만들어집니다. 인덱스, 세부 정보, 만들기 및 편집이라는 메서드가 포함되어 있습니다. 다음 섹션에서는 이러한 메서드가 작동하도록 하는 데 필요한 코드를 추가합니다.

홈 컨트롤러가 입력되고 추가 작업 상자가 선택된 컨트롤러 추가 상자 스크린샷

그림 08: 새 ASP.NET MVC 컨트롤러 추가(전체 크기 이미지를 보려면 클릭)

목록 1 – Controllers\HomeController.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Mvc.Ajax; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        //

        // GET: /Home/ 

        public ActionResult Index()

        {

            return View();

        } 

        //

        // GET: /Home/Details/5 

        public ActionResult Details(int id)

        {

            return View();

        } 

        //

        // GET: /Home/Create 

        public ActionResult Create()

        {

            return View();

        }  

        //

        // POST: /Home/Create 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Create(FormCollection collection)

        {

            try

            {

                // TODO: Add insert logic here 

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        } 

        //

        // GET: /Home/Edit/5

        public ActionResult Edit(int id)

        {

            return View();

        } 

        //

        // POST: /Home/Edit/5 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Edit(int id, FormCollection collection)

        {

            try

            {

                // TODO: Add update logic here

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        }

    }

}

데이터베이스 레코드 나열

홈 컨트롤러의 Index() 메서드는 ASP.NET MVC 애플리케이션의 기본 메서드입니다. ASP.NET MVC 애플리케이션을 실행하는 경우 Index() 메서드는 호출되는 첫 번째 컨트롤러 메서드입니다.

Index() 메서드를 사용하여 Movies 데이터베이스 테이블의 레코드 목록을 표시합니다. 앞에서 만든 데이터베이스 모델 클래스를 활용하여 Index() 메서드를 사용하여 영화 데이터베이스 레코드를 검색합니다.

목록 2에서 HomeController 클래스를 수정하여 _db이라는 새 프라이빗 필드를 포함했습니다. MoviesDBEntities 클래스는 데이터베이스 모델을 나타내며 이 클래스를 사용하여 데이터베이스와 통신합니다.

또한 목록 2에서 Index() 메서드를 수정했습니다. Index() 메서드는 MoviesDBEntities 클래스를 사용하여 Movies 데이터베이스 테이블에서 모든 영화 레코드를 검색합니다. 식 _db. MovieSet.ToList() 는 Movies 데이터베이스 테이블의 모든 영화 레코드 목록을 반환합니다.

영화 목록이 보기에 전달됩니다. View() 메서드에 전달되는 모든 항목은 뷰 데이터로 뷰에 전달됩니다.

목록 2 – 컨트롤러/HomeController.cs(수정된 Index 메서드)

using System.Linq;

using System.Web.Mvc;

using MovieApp.Models; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        private MoviesDBEntities _db = new MoviesDBEntities(); 

        public ActionResult Index()

        {

            return View(_db.MovieSet.ToList());

        }

    }

}

Index() 메서드는 Index라는 뷰를 반환합니다. 영화 데이터베이스 레코드 목록을 표시하려면 이 보기를 만들어야 합니다. 다음 단계를 수행합니다.

보기 추가 대화 상자를 열기 전에 프로젝트를 빌드하거나(메뉴 옵션 빌드, 솔루션 빌드 선택) 뷰 데이터 클래스 드롭다운 목록에 클래스가 표시되지 않습니다.

  1. 코드 편집기에서 Index() 메서드를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션 [보기 추가]를 선택합니다(그림 9 참조).
  2. 보기 추가 대화 상자에서 강력한 형식의 보기 만들기라는 레이블이 지정된 확인란이 선택되어 있는지 확인합니다.
  3. 콘텐츠 보기 드롭다운 목록에서 값 목록을 선택합니다.
  4. 보기 데이터 클래스 드롭다운 목록에서 MovieApp.Models.Movie 값을 선택합니다.
  5. 추가 단추를 클릭하여 새 보기를 만듭니다(그림 10 참조).

이 단계를 완료하면 Index.aspx라는 새 보기가 Views\Home 폴더에 추가됩니다. 인덱스 보기의 내용은 목록 3에 포함됩니다.

보기 추가가 선택된 오른쪽 클릭 드롭다운 상자를 보여주는 코드 편집기의 스크린샷.

그림 09: 컨트롤러 작업에서 보기 추가(전체 크기 이미지를 보려면 클릭)

보기 이름, 인덱스 및 강력한 형식의 보기 만들기 및 선택한 마스터 페이지 선택 항목을 보여 주는 보기 추가 상자의 스크린샷

그림 10: 보기 추가 대화 상자를 사용하여 새 보기 만들기(전체 크기 이미지를 보려면 클릭)

목록 3 – Views\Home\Index.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Index

    </asp:Content> 

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

        <h2>Index</h2> 

        <table>

            <tr>

                <th></th>

                <th>

                    Id

                </th>

                <th>

                    Title

                </th>

                <th>

                    Director

                </th>

                <th>

                    DateReleased

                </th>

            </tr> 

        <% foreach (var item in Model) { %>

            <tr>

                <td>

                    <%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |

                    <%= Html.ActionLink("Details", "Details", new { id=item.Id })%>

                </td>

                <td>

                    <%= Html.Encode(item.Id) %>

                </td>

                <td>

                    <%= Html.Encode(item.Title) %>

                </td>

                <td>

                    <%= Html.Encode(item.Director) %>

                </td>

                <td>

                    <%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>

                </td>

            </tr>

        <% } %> 

        </table> 

        <p>

            <%= Html.ActionLink("Create New", "Create") %>

        </p> 

    </asp:Content>

인덱스 보기는 HTML 테이블 내 Movies 데이터베이스 테이블의 모든 영화 레코드를 표시합니다. 뷰에는 ViewData.Model 속성이 나타내는 각 동영상을 반복하는 foreach 루프가 포함되어 있습니다. F5 키를 눌러 애플리케이션을 실행하는 경우 그림 11에 웹 페이지가 표시됩니다.

ID, 제목, 감독 및 릴리스된 날짜를 비롯한 영화 정보를 보여주는 인덱스 보기의 스크린샷

그림 11: 인덱스 보기(전체 크기 이미지를 보려면 클릭)

새 데이터베이스 레코드 만들기

이전 섹션에서 만든 인덱스 보기에는 새 데이터베이스 레코드를 만들기 위한 링크가 포함되어 있습니다. 앞으로 논리를 구현하고 새 영화 데이터베이스 레코드를 만드는 데 필요한 보기를 만들어 보겠습니다.

홈 컨트롤러에는 Create()라는 두 가지 메서드가 포함되어 있습니다. 첫 번째 Create() 메서드에는 매개 변수가 없습니다. Create() 메서드의 이 오버로드는 새 영화 데이터베이스 레코드를 만들기 위한 HTML 양식을 표시하는 데 사용됩니다.

두 번째 Create() 메서드에는 FormCollection 매개 변수가 있습니다. Create() 메서드의 이 오버로드는 새 동영상을 만들기 위한 HTML 양식이 서버에 게시될 때 호출됩니다. 이 두 번째 Create() 메서드에는 HTTP POST 작업이 수행되지 않는 한 메서드가 호출되지 않도록 하는 AcceptVerbs 특성이 있습니다.

이 두 번째 Create() 메서드는 목록 4의 업데이트된 HomeController 클래스에서 수정되었습니다. Create() 메서드의 새 버전은 Movie 매개 변수를 허용하고 새 동영상을 Movies 데이터베이스 테이블에 삽입하는 논리를 포함합니다.

참고 항목

Bind 특성을 확인합니다. HTML 양식에서 Movie Id 속성을 업데이트하지 않으려면 이 속성을 명시적으로 제외해야 합니다.

목록 4 – Controllers\HomeController.cs(수정된 Create 메서드)

//

// GET: /Home/Create 

public ActionResult Create()

{

    return View();

}  

//

// POST: /Home/Create 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate)

{

     if (!ModelState.IsValid)

        return View(); 

    _db.AddToMovieSet(movieToCreate);

    _db.SaveChanges(); 

    return RedirectToAction("Index");

}

Visual Studio를 사용하면 새 영화 데이터베이스 레코드를 만들기 위한 양식을 쉽게 만들 수 있습니다(그림 12 참조). 다음 단계를 수행합니다.

  1. 코드 편집기에서 Create() 메서드를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션 보기 추가를 선택합니다.
  2. 강력한 형식의 보기 만들기라는 레이블이 지정된 확인란이 선택되어 있는지 확인합니다.
  3. 콘텐츠 보기 드롭다운 목록에서 만들기 값을 선택합니다.
  4. 보기 데이터 클래스 드롭다운 목록에서 MovieApp.Models.Movie 값을 선택합니다.
  5. 추가 단추를 클릭하여 새 보기를 만듭니다.

강력한 형식의 보기 만들기 및 선택한 마스터 페이지 항목을 선택하는 보기 이름 만들기에 대한 보기 추가 상자의 스크린샷

그림 12: 만들기 보기 추가(전체 크기 이미지를 보려면 클릭)

Visual Studio는 목록 5에서 보기를 자동으로 생성합니다. 이 보기에는 Movie 클래스의 각 속성에 해당하는 필드가 포함된 HTML 양식이 포함되어 있습니다.

목록 5 – Views\Home\Create.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MovieApp.Models.Movie>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Create

    </asp:Content> 

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

        <h2>Create</h2> 

        <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %> 

        <% using (Html.BeginForm()) {%> 

            <fieldset>

                <legend>Fields</legend>

                <p>

                    <label for="Id">Id:</label>

                    <%= Html.TextBox("Id") %>

                    <%= Html.ValidationMessage("Id", "*") %>

                </p>

                <p>

                    <label for="Title">Title:</label>

                    <%= Html.TextBox("Title") %>

                    <%= Html.ValidationMessage("Title", "*") %>

                </p>

                <p>

                    <label for="Director">Director:</label>

                    <%= Html.TextBox("Director") %>

                    <%= Html.ValidationMessage("Director", "*") %>

                </p>

                <p>

                    <label for="DateReleased">DateReleased:</label>

                    <%= Html.TextBox("DateReleased") %>

                    <%= Html.ValidationMessage("DateReleased", "*") %>

                </p>

                <p>

                    <input type="submit" value="Create" />

                </p>

            </fieldset> 

        <% } %> 

        <div>

            <%=Html.ActionLink("Back to List", "Index") %>

        </div> 

    </asp:Content>

참고 항목

보기 추가 대화 상자에서 생성된 HTML 양식은 ID 양식 필드를 생성합니다. ID 열은 ID 열이므로 이 양식 필드가 필요하지 않으며 안전하게 제거할 수 있습니다.

만들기 보기를 추가한 후 데이터베이스에 새 Movie 레코드를 추가할 수 있습니다. F5 키를 눌러 애플리케이션을 실행하고 새로 만들기 링크를 클릭하여 그림 13의 양식을 확인합니다. 양식을 완료하고 제출하면 새 영화 데이터베이스 레코드가 만들어집니다.

양식 유효성 검사가 자동으로 수행됩니다. 동영상의 릴리스 날짜를 입력하지 않거나 잘못된 릴리스 날짜를 입력하면 양식이 다시 표시되고 릴리스 날짜 필드가 강조 표시됩니다.

제목, 디렉터 및 릴리스된 날짜의 필수 데이터베이스 필드를 보여주는 보기 만들기 페이지를 표시하는 브라우저의 스크린샷.

그림 13: 새 영화 데이터베이스 레코드 만들기(전체 크기 이미지를 보려면 클릭)

기존 데이터베이스 레코드 편집

이전 섹션에서는 새 데이터베이스 레코드를 나열하고 만드는 방법을 설명했습니다. 이 마지막 섹션에서는 기존 데이터베이스 레코드를 편집하는 방법에 대해 설명합니다.

먼저 편집 양식을 생성해야 합니다. Visual Studio에서 자동으로 편집 양식을 생성하기 때문에 이 단계는 쉽습니다. Visual Studio 코드 편집기에서 HomeController.cs 클래스를 열고 다음 단계를 수행합니다.

  1. 코드 편집기에서 Edit() 메서드를 마우스 오른쪽 단추로 클릭하고 메뉴 옵션 [보기 추가]를 선택합니다(그림 14 참조).
  2. 강력한 형식의 보기 만들기라는 레이블이 지정된 확인란을 선택합니다.
  3. 콘텐츠 보기 드롭다운 목록에서 편집 값을 선택합니다.
  4. 보기 데이터 클래스 드롭다운 목록에서 MovieApp.Models.Movie 값을 선택합니다.
  5. 추가 단추를 클릭하여 새 보기를 만듭니다.

이 단계를 완료하면 Edit.aspx라는 새 보기가 Views\Home 폴더에 추가되었습니다. 이 보기에는 영화 레코드를 편집하기 위한 HTML 양식이 포함되어 있습니다.

강력한 형식의 보기 만들기 및 선택한 마스터 페이지 항목을 선택하는 보기 이름 편집에 대한 보기 추가 상자의 스크린샷.

그림 14: 편집 보기 추가(전체 크기 이미지를 보려면 클릭)

참고 항목

편집 보기에는 동영상 ID 속성에 해당하는 HTML 양식 필드가 포함되어 있습니다. Id 속성의 값을 편집하는 사람이 없으면 이 양식 필드를 제거해야 합니다.

마지막으로 데이터베이스 레코드 편집을 지원하도록 홈 컨트롤러를 수정해야 합니다. 업데이트된 HomeController 클래스는 목록 6에 포함되어 있습니다.

목록 6 – Controllers\HomeController.cs(메서드 편집)

//

// GET: /Home/Edit/5 

public ActionResult Edit(int id)

{

    var movieToEdit = (from m in _db.MovieSet

                       where m.Id == id

                       select m).First(); 

    return View(movieToEdit);

} 

//

// POST: /Home/Edit/5 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Edit(Movie movieToEdit)

{ 

    var originalMovie = (from m in _db.MovieSet

                         where m.Id == movieToEdit.Id

                         select m).First(); 

    if (!ModelState.IsValid)

        return View(originalMovie);

        _db.ApplyPropertyChanges(originalMovie.EntityKey.EntitySetName, movieToEdit);

        _db.SaveChanges(); 

        return RedirectToAction("Index");

}

목록 6에서 Edit() 메서드의 두 오버로드에 추가 논리를 추가했습니다. 첫 번째 Edit() 메서드는 메서드에 전달된 Id 매개 변수에 해당하는 동영상 데이터베이스 레코드를 반환합니다. 두 번째 오버로드는 데이터베이스의 영화 레코드에 대한 업데이트를 수행합니다.

원래 동영상을 검색한 다음 ApplyPropertyChanges()를 호출하여 데이터베이스의 기존 동영상을 업데이트해야 합니다.

요약

이 자습서의 목적은 ASP.NET MVC 애플리케이션을 빌드하는 환경을 제공하는 것이었습니다. ASP.NET MVC 웹 애플리케이션 빌드는 Active Server Pages 또는 ASP.NET 애플리케이션을 빌드하는 환경과 매우 유사합니다.

이 자습서에서는 ASP.NET MVC 프레임워크의 가장 기본적인 기능만 검토했습니다. 이후 자습서에서는 컨트롤러, 컨트롤러 작업, 보기, 데이터 보기 및 HTML 도우미와 같은 항목에 대해 자세히 알아봅니다.