참고
Visual Studio 2013 사용하여이 자습서를 사용할 수 있는 경우 업데이트된 버전입니다. 새 자습서에서는 ASP.NET MVC 5를 사용하며, 이 자습서에서는 많은 개선 사항을 제공합니다.
이 자습서에서는 ASP.NET MVC의 기본 사항을 소개합니다. 데이터베이스에서 읽고 쓰는 간단한 웹 애플리케이션을 만듭니다. 다른 ASP.NET MVC 자습서 및 샘플을 찾으려면 ASP.NET MVC 학습 센터를 방문하세요.
MVC는 모델, 뷰, 컨트롤러를 의미합니다. MVC는 각 파트가 서로 다른 책임이 있도록 애플리케이션을 개발하기 위한 패턴입니다.
- 모델: 애플리케이션의 데이터
- 보기: 애플리케이션이 HTML 응답을 동적으로 생성하는 데 사용할 템플릿 파일입니다.
- 컨트롤러: 애플리케이션에 들어오는 URL 요청을 처리하고, 모델 데이터를 검색한 다음, 클라이언트에 응답을 다시 렌더링하는 뷰 템플릿을 지정하는 클래스
이 자습서에서는 이러한 모든 개념을 다루고 이를 사용하여 애플리케이션을 빌드하는 방법을 보여 줍니다.
솔루션 Explorer 컨트롤러 폴더를 마우스 오른쪽 단추로 클릭하고 컨트롤러 추가를 선택하여 새 컨트롤러를 만들어 보겠습니다.
새 컨트롤러 이름을 "HelloWorldController"로 지정하고 추가를 클릭합니다.
오른쪽의 솔루션 탐색기 HelloWorldController.cs라는 새 파일이 만들어졌으며 해당 파일이 이제 IDE에서 열립니다.
새 공용 클래스 HelloWorldController 내에서 다음과 같은 두 가지 새 메서드를 만듭니다. 예를 들어 컨트롤러에서 직접 HTML 문자열을 반환합니다.
using System.Web.Mvc;
namespace Movies.Controllers
{
public class HelloWorldController : Controller
{
public string Index()
{
return "This is my default action...";
}
public string Welcome()
{
return "This is the Welcome action method...";
}
}
}
컨트롤러 이름은 HelloWorldController이고 새 메서드를 Index라고 합니다. 이전과 마찬가지로 애플리케이션을 다시 실행합니다(재생 단추를 클릭하거나 F5 키를 눌러 이 작업을 수행). 브라우저가 시작되면 주소 표시줄의 경로를 컴퓨터에서 선택한 번호가 xx인 위치로 http://localhost:xx/HelloWorld
변경합니다. 이제 브라우저가 아래 스크린샷과 같이 표시됩니다. 위의 메서드에서 "Content"라는 메서드에 전달된 문자열을 반환했습니다. 시스템에서 HTML을 반환했다고 말했습니다.
ASP.NET MVC는 들어오는 URL에 따라 다른 컨트롤러 클래스(및 그 안에 있는 다른 Action 메서드)를 호출합니다. ASP.NET MVC에서 사용하는 기본 매핑 논리는 다음과 같은 형식을 사용하여 실행되는 코드를 제어합니다.
/[Controller]/[ActionName]/[Parameters]
URL의 첫 번째 부분에서는 실행할 컨트롤러 클래스를 결정합니다. 따라서 /HelloWorld는 HelloWorldController 클래스에 매핑합니다. URL의 두 번째 부분에서 실행할 클래스의 Action 메서드를 결정합니다. 따라서 /HelloWorld/Index로 인해 HelloWorldController 클래스의 Index() 메서드가 실행됩니다. 위의 /HelloWorld만 방문해야 했고 Index 메서드가 암시되었습니다. "Index"라는 메서드가 명시적으로 지정되지 않은 경우 컨트롤러에서 호출되는 기본 메서드이기 때문입니다.
이제 시작 메서드가 실행되고 HTML 문자열을 반환했으므로 을 방문 http://localhost:xx/HelloWorld/Welcome.
해 보겠습니다.
다시 말하지만 , /[Controller]/[ActionName]/[Parameters]이므로 Controller는 HelloWorld이고 Welcome은 이 경우 메서드입니다. 아직 매개 변수를 완료하지 않았습니다.
/HelloWorld/Welcome?name=Scott&numtimes=4와 같은 일부 정보를 URL에서 컨트롤러로 전달할 수 있도록 샘플을 약간 수정해 보겠습니다. 두 개의 매개 변수를 포함하도록 Welcome 메서드를 변경하고 아래와 같이 업데이트합니다. C# 선택적 매개 변수 기능을 사용하여 전달되지 않은 경우 numTimes 매개 변수가 기본적으로 1로 설정되어야 함을 나타냅니다.
public string Welcome(string name, int numTimes = 1)
{
string message = "Hello " + name + ", NumTimes is: " + numTimes;
return "" + Server.HtmlEncode(message) + "";
}
애플리케이션을 실행하고 원하는 대로 이름 및 numtimes 값 변경을 방문 http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4
합니다. 시스템은 주소 표시줄의 쿼리 문자열에서 명명된 매개 변수를 메서드의 매개 변수에 자동으로 매핑했습니다.
이 두 예제에서 컨트롤러는 모든 작업을 수행했으며 HTML을 직접 반환했습니다. 일반적으로 컨트롤러가 HTML을 직접 반환하는 것을 원하지 않습니다. 이는 결국 코드에 매우 번거롭기 때문에 입니다. 대신 일반적으로 HTML 응답을 생성하는 데 도움이 되는 별도의 보기 템플릿 파일을 사용합니다. 이 작업을 수행하는 방법을 살펴보겠습니다. 브라우저를 닫고 IDE로 돌아갑니다.