컨트롤러 추가(C#)Adding a Controller (C#)

Rick Andersonby Rick Anderson

Note

ASP.NET MVC 5와 Visual Studio 2013를 사용 하는이 자습서의 업데이트 된 버전 을 사용할 수 있습니다.An updated version of this tutorial is available here that uses ASP.NET MVC 5 and Visual Studio 2013. 더 안전 하 고 더 간단 하 고 더 많은 기능을 보여 줍니다.It's more secure, much simpler to follow and demonstrates more features.

이 자습서에서는 Microsoft Visual Studio의 무료 버전인 Microsoft Visual Web Developer 2010 Express 서비스 팩 1을 사용 하 여 ASP.NET MVC 웹 응용 프로그램을 빌드하는 기본 사항을 학습 합니다.This tutorial will teach you the basics of building an ASP.NET MVC Web application using Microsoft Visual Web Developer 2010 Express Service Pack 1, which is a free version of Microsoft Visual Studio. 시작 하기 전에 아래 나열 된 필수 구성 요소를 설치 했는지 확인 합니다.Before you start, make sure you've installed the prerequisites listed below. 웹 플랫폼 설치 관리자링크를 클릭 하 여 모든 항목을 설치할 수 있습니다.You can install all of them by clicking the following link: Web Platform Installer. 또는 다음 링크를 사용 하 여 필수 구성 요소를 개별적으로 설치할 수 있습니다.Alternatively, you can individually install the prerequisites using the following links:

Visual Web Developer 2010 대신 Visual Studio 2010을 사용 하는 경우 Visual studio 2010 필수 조건링크를 클릭 하 여 필수 구성 요소를 설치 합니다.If you're using Visual Studio 2010 instead of Visual Web Developer 2010, install the prerequisites by clicking the following link: Visual Studio 2010 prerequisites.

이 항목과 함께 사용할 수 있는 C# 소스 코드가 포함 된 Visual Web Developer 프로젝트를 사용할 수 있습니다.A Visual Web Developer project with C# source code is available to accompany this topic. 버전을 C# 다운로드합니다.Download the C# version. Visual Basic 선호 하는 경우이 자습서의 Visual Basic 버전 으로 전환 합니다.If you prefer Visual Basic, switch to the Visual Basic version of this tutorial.

MVC는 모델-뷰-컨트롤러를 나타냅니다.MVC stands for model-view-controller. MVC는 잘 설계 되 고 유지 관리가 쉬운 응용 프로그램을 개발 하기 위한 패턴입니다.MVC is a pattern for developing applications that are well architected and easy to maintain. MVC 기반 응용 프로그램에는 다음이 포함 됩니다.MVC-based applications contain:

  • 컨트롤러: 응용 프로그램에 대 한 들어오는 요청을 처리 하 고 모델 데이터를 검색 한 다음 클라이언트에 대 한 응답을 반환 하는 뷰 템플릿을 지정 하는 클래스입니다.Controllers: Classes that handle incoming requests to the application, retrieve model data, and then specify view templates that return a response to the client.
  • 모델: 응용 프로그램의 데이터를 나타내고 유효성 검사 논리를 사용 하 여 해당 데이터에 대 한 비즈니스 규칙을 적용 하는 클래스입니다.Models: Classes that represent the data of the application and that use validation logic to enforce business rules for that data.
  • 보기: 응용 프로그램에서 HTML 응답을 동적으로 생성 하는 데 사용 하는 템플릿 파일입니다.Views: Template files that your application uses to dynamically generate HTML responses.

Microsoft는이 자습서 시리즈의 모든 개념을 다루며 응용 프로그램을 빌드하는 데 사용 하는 방법을 보여 줍니다.We'll be covering all these concepts in this tutorial series and show you how to use them to build an application.

먼저 컨트롤러 클래스를 만들어 보겠습니다.Let's begin by creating a controller class. 솔루션 탐색기에서 Controllers 폴더를 마우스 오른쪽 단추로 클릭 하 고 컨트롤러 추가를 선택 합니다.In Solution Explorer, right-click the Controllers folder and then select Add Controller.

새 컨트롤러의 이름을 "HelloWorldController"로 합니다.Name your new controller "HelloWorldController". 기본 템플릿을 빈 컨트롤러로 그대로 두고 추가를 클릭 합니다.Leave the default template as Empty controller and click Add.

AddHelloWorldControllerAddHelloWorldController

HelloWorldController.cs라는 새 파일이 생성 솔루션 탐색기 합니다.Notice in Solution Explorer that a new file has been created named HelloWorldController.cs. 파일이 IDE에 열려 있습니다.The file is open in the IDE.

public class HelloWorldController 블록 내에서 다음 코드와 같이 두 개의 메서드를 만듭니다.Inside the public class HelloWorldController block, create two methods that look like the following code. 컨트롤러는 HTML 문자열을 예로 반환 합니다.The controller will return a string of HTML as an example.

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

컨트롤러는 HelloWorldController 이름이 지정 되 고 위의 첫 번째 메서드는 Index으로 이름이 지정 됩니다.Your controller is named HelloWorldController and the first method above is named Index. 브라우저에서 호출 해 보겠습니다.Let's invoke it from a browser. F5 키 또는 Ctrl + F5 키를 눌러 응용 프로그램을 실행 합니다.Run the application (press F5 or Ctrl+F5). 브라우저에서 주소 표시줄의 경로에 "HelloWorld"를 추가 합니다.In the browser, append "HelloWorld" to the path in the address bar. (예를 들어 아래 그림에서는 http://localhost:43246/HelloWorld.) 브라우저의 페이지는 다음 스크린샷 처럼 표시 됩니다.(For example, in the illustration below, it's http://localhost:43246/HelloWorld.) The page in the browser will look like the following screenshot. 위의 메서드에서 코드는 문자열을 직접 반환 했습니다.In the method above, the code returned a string directly. 일부 HTML만 반환 하도록 시스템에 지시 했습니다.You told the system to just return some HTML, and it did!

ASP.NET MVC는 들어오는 URL에 따라 서로 다른 컨트롤러 클래스 (및 그 안의 다른 작업 메서드)를 호출 합니다.ASP.NET MVC invokes different controller classes (and different action methods within them) depending on the incoming URL. ASP.NET MVC에서 사용 하는 기본 매핑 논리는 다음과 같은 형식을 사용 하 여 호출할 코드를 결정 합니다.The default mapping logic used by ASP.NET MVC uses a format like this to determine what code to invoke:

/[Controller]/[ActionName]/[Parameters]

URL의 첫 번째 부분은 실행할 컨트롤러 클래스를 결정 합니다.The first part of the URL determines the controller class to execute. 따라서 /HelloWorldHelloWorldController 클래스에 매핑됩니다.So /HelloWorld maps to the HelloWorldController class. URL의 두 번째 부분은 실행할 클래스에 대 한 작업 메서드를 결정 합니다.The second part of the URL determines the action method on the class to execute. 따라서 /HelloWorld/Index 을 실행 하면 HelloWorldController 클래스의 Index 메서드가 실행 될 수 있습니다.So /HelloWorld/Index would cause the Index method of the HelloWorldController class to execute. /Helloworld 로 이동 하기만 하면 Index 메서드가 기본적으로 사용 되었습니다.Notice that we only had to browse to /HelloWorld and the Index method was used by default. 이는 Index 라는 메서드가 명시적으로 지정 되지 않은 경우 컨트롤러에서 호출 되는 기본 메서드 이기 때문입니다.This is because a method named Index is the default method that will be called on a controller if one is not explicitly specified.

[https://www.microsoft.com](http://localhost:xxxx/HelloWorld/Welcome) 로 이동합니다.Browse to http://localhost:xxxx/HelloWorld/Welcome. Welcome 메서드는 "시작 작업 메서드입니다..."라는 문자열을 실행하고 반환합니다.The Welcome method runs and returns the string "This is the Welcome action method...". 기본 MVC 매핑은 /[Controller]/[ActionName]/[Parameters]입니다.The default MVC mapping is /[Controller]/[ActionName]/[Parameters]. 이 URL의 경우 컨트롤러는 HelloWorld이고 Welcome이 작업 메서드입니다.For this URL, the controller is HelloWorld and Welcome is the action method. 아직 URL의 [Parameters] 부분을 사용하지 않았습니다.You haven't used the [Parameters] part of the URL yet.

URL의 일부 매개 변수 정보를 컨트롤러에 전달할 수 있도록 예제를 약간 수정 하겠습니다 (예: /HelloWorld/Welcome? name = Scott&numtimes = 4).Let's modify the example slightly so that you can pass some parameter information from the URL to the controller (for example, /HelloWorld/Welcome?name=Scott&numtimes=4). 아래와 같이 두 개의 매개 변수를 포함 하도록 Welcome 메서드를 변경 합니다.Change your Welcome method to include two parameters as shown below. 이 코드는 C# 선택적 매개 변수 기능을 사용 하 여 해당 매개 변수에 대해 전달 된 값이 없는 경우 numTimes 매개 변수를 기본값 1로 지정 합니다.Note that the code uses the C# optional-parameter feature to indicate that the numTimes parameter should default to 1 if no value is passed for that parameter.

public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

응용 프로그램을 실행 하 고 예제 URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4)로 이동 합니다.Run your application and browse to the example URL (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). URL에서 namenumtimes에 다른 값을 사용할 수 있습니다.You can try different values for name and numtimes in the URL. 시스템은 주소 표시줄의 쿼리 문자열에 있는 명명 된 매개 변수를 메서드의 매개 변수에 자동으로 매핑합니다.The system automatically maps the named parameters from the query string in the address bar to parameters in your method.

이러한 두 예제에서 컨트롤러는 MVC의 "VC" 부분을 수행 하 고 있습니다. 즉, 뷰 및 컨트롤러가 작동 합니다.In both these examples the controller has been doing the "VC" portion of MVC — that is, the view and controller work. 컨트롤러가 HTML을 직접 반환하고 있습니다.The controller is returning HTML directly. 일반적으로 컨트롤러는 코드를 매우 복잡 하 게 하기 때문에 HTML을 직접 반환 하는 것을 원하지 않습니다.Ordinarily you don't want controllers returning HTML directly, since that becomes very cumbersome to code. 대신 일반적으로 별도의 뷰 템플릿 파일을 사용 하 여 HTML 응답을 생성 합니다.Instead we'll typically use a separate view template file to help generate the HTML response. 이 작업을 수행 하는 방법에 대해 알아보겠습니다.Let's look next at how we can do this.