이 자습서에서는 ASP.NET MVC의 기본 사항을 소개합니다. 데이터베이스에서 읽고 쓰는 간단한 웹 애플리케이션을 만듭니다. 다른 ASP.NET MVC 자습서 및 샘플을 찾으려면 ASP.NET MVC 학습 센터를 방문하세요.
이 섹션에서는 데이터베이스의 스키마를 변경하고 애플리케이션 내에서 변경 내용을 처리하는 방법을 살펴보겠습니다.
영화 테이블에 "등급" 열을 추가해 보겠습니다. IDE로 돌아가기 데이터베이스 Explorer 클릭합니다. 영화 테이블을 마우스 오른쪽 단추로 클릭하고 테이블 정의 열기를 선택합니다.
아래와 같이 "등급" 열을 추가합니다. 현재 등급이 없으므로 열에서 null을 허용할 수 있습니다. 저장을 클릭합니다.
그런 다음, 솔루션 탐색기 돌아가서 Movies.edmx 파일(\Models 폴더에 있는)을 엽니다. 디자인 화면(흰색 영역)을 마우스 오른쪽 단추로 클릭하고 데이터베이스에서 모델 업데이트를 선택합니다.
그러면 "업데이트 마법사"가 시작됩니다. 새로 고침 탭을 클릭하고 마침을 클릭합니다. 그러면 Movie 모델 클래스가 새 열로 업데이트됩니다.
마침을 클릭하면 모델의 영화 엔터티에 새 등급 열이 추가된 것을 볼 수 있습니다.
데이터베이스 모델에 열을 추가했지만 뷰는 이에 대해 알지 못합니다.
모델 변경 내용으로 보기 업데이트
새 등급 열을 반영하도록 보기 템플릿을 업데이트할 수 있는 몇 가지 방법이 있습니다. 보기 추가 대화 상자를 통해 이러한 뷰를 생성하여 만들었으므로 뷰를 삭제하고 다시 만들 수 있습니다. 그러나 일반적으로 사람들은 초기 스캐폴드된 세대에서 보기 템플릿을 이미 수정했으며 만들기의 ID 필드와 마찬가지로 필드를 수동으로 추가하거나 삭제하려고 합니다.
\Views\Movies\Index.aspx 템플릿을 열고 무비 테이블의 헤드에 등급<>/th>를 추가<합니다. 나는 장르 후 내 추가. 그런 다음, 동일한 열 위치와 아래쪽에 줄을 추가하여 새 Rating을 출력합니다.
<td>
<%: item.Rating %>
</td>
최종 Index.aspx 템플릿은 다음과 같습니다.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Movies.Models.Movie>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Movie List
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>My Movie List</h2>
<table>
<tr>
<th>Id</th>
<th>Title</th>
<th>ReleaseDate</th>
<th>Genre</th>
<th>Rating</th>
<th>Price</th>
</tr>
<% foreach (var item in Model)
{ %>
<tr>
<td><%: item.Id %></td>
<td><%: item.Title %></td>
<td><%: String.Format("{0:g}", item.ReleaseDate) %></td>
<td><%: item.Genre %></td>
<td><%: item.Rating %></td>
<td><%: String.Format("{0:F}", item.Price) %></td>
</tr>
<% } %>
</table>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
</asp:Content>
그런 다음 \Views\Movies\Create.aspx 템플릿을 열고 새 Rating 속성에 대한 레이블 및 텍스트 상자를 추가해 보겠습니다.
<div class="editor-label">
<%: Html.LabelFor(model => model.Rating) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Rating)%>
<%: Html.ValidationMessageFor(model => model.Rating)%>
</div>
최종 Create.aspx 템플릿은 다음과 같이 표시되며, 여기에 있는 동안 브라우저의 제목 및 보조 <h2> 제목을 "영화 만들기"와 같이 변경해 보겠습니다.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Movies.Models.Movie>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create a Movie
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
<h2>Create a Movie</h2>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Title) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Title) %>
<%: Html.ValidationMessageFor(model => model.Title) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.ReleaseDate) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.ReleaseDate) %>
<%: Html.ValidationMessageFor(model => model.ReleaseDate) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Genre) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Genre) %>
<%: Html.ValidationMessageFor(model => model.Genre) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Rating) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Rating)%>
<%: Html.ValidationMessageFor(model => model.Rating)%>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Price) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Price) %>
<%: Html.ValidationMessageFor(model => model.Price) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
앱을 실행하면 이제 데이터베이스에 만들기 페이지에 추가된 새 필드가 생겼습니다. 이번에는 등급이 포함된 새 동영상을 추가하고 만들기를 클릭합니다.
만들기를 클릭하면 새 동영상이 데이터베이스의 새 등급 열과 함께 나열되는 인덱스 페이지로 전송됩니다.
이 기본 자습서에서는 컨트롤러를 만들어 보기와 연결하고 하드 코딩된 데이터를 전달하기 시작했습니다. 그런 다음 데이터베이스를 만들고 디자인하고 일부 데이터를 입력합니다. 데이터베이스에서 데이터를 검색하여 HTML 테이블에 표시했습니다. 그런 다음 사용자가 웹 애플리케이션 내에서 데이터베이스에 데이터를 직접 추가할 수 있는 만들기 양식을 추가했습니다. 유효성 검사를 추가한 다음, 유효성 검사가 클라이언트 쪽에서 JavaScript를 사용하도록 했습니다. 마지막으로 새 데이터 열을 포함하도록 데이터베이스를 변경한 다음 이 새 데이터를 만들고 표시하도록 두 페이지를 업데이트했습니다.
이제 MVC에 대한 자세한 내용을 알아보려면 중간 수준의 자습서인 "MVC Music Store"와 많은 비디오 및 리소스 https://asp.net/mvc 로 이동해 ASP.NET 것이 좋습니다.
즐겨보세요!
- 스콧 핸셀먼 - http://hanselman.com 그리고 트위터에 @shanselman .