-
프로젝트에 MVC프레임워크를 사용하도록 설정하고 Demo컨트롤러 만들기카테고리 없음 2022. 2. 10. 13:48
ASP.NET Core는 처음 만들어졌을 때, dotnet core의 핵심 엔진 위에 기본적인 서비스 MVC가 포함이 되어 있는 상태이다. MVC ASP.NET의 가장 큰 서비스이기도 하다.
현재 프로젝트에서 MVC형태 대로 어떠한 단위를 나눠서 웹프로그래밍을 해주고 싶다면, 몇가지 절차가 필요하다.
프로젝트 디렉토리에 MVC각각의 관련된 파일을들 담게 될 폴더를 생성해 준다. 물론 Views 폴더를 제외한 Controllers폴더와 Models는 class폴더로 존재한다. dotnet은 namespace만 일치 시켜주면, class 파일이 어디에 위치해도 상관이 없다. Controller 폴더와 Model 폴더는 다른곳에 다른위치에 존재해도 전혀 상관이 없다. 다만 Views폴더는 읽어올시 경로가 중요하기 때문에 엄격하게 지켜주어야 한다.
메서드 ConfigureServices
말 그대로 service의 개념 현재 핵심엔진에 다가 ~~한 service를 넣어 줄 것인가 하는 개념이다.
상대적으로 Configure보다는 ConfigureServices가 큰 개념이다.
step1
service.AddContorellerWithView( )
ConfigServices메서드 안에 써준다.add MVC랑 거의 같은 개념이다. 이 메서드를 추가하게되면, Controllers하고, Views하고 (Model은 어차피 clasd)를 사용하겠다는 의미이다.
메서드 Configure
~~한 미들웨어(확장메서드)를 넣어줄 것인가 하는 개념이다.
step2
endpoint.MapControllerRoute( )
해당 메서드를 Configure메소드 안에 app.UseEndpoints( ) 안에 arrow함수의 매개변수 endpoints 결과값으로 지정해준다. 이제 해당 프로젝트는 MVC프로젝트가 된다.
ASP.NET프로젝트롤 Empty로 만든 다음에 해당 프로젝트를 MVC 패턴을 사용해 주고싶다면, 지정위치에 step1과 step2의 메서드를 적어주면 된다.
Controller 만들기
웹 브라우저에서 프로젝트 https://도메인/demo를 URL로 해서 이동을 하면 DemoController.cs가 실행된다.
기본 템플릿으로 Controller를 만드니까 이만큼의 기본 코드를 만들어준다. DemoController class 를 만들어주고 Controller class에서 상속을 받는다. 그리고 또 그 class안에 기본으로 Index(인덱스 액션) 메소드를 하나 만들어 준다.
+ 경로 => /Demo/index = /컨트롤러/액션
경로에서 Controller/index를 입력하면 해당 Contorller class에 해당 메소드안에서 무엇을 실행 할 것인지 결정한다.
index는 기본값이여서 무조건 존재하고 URL /Demo/ 다음에 경로를 적지 않으면 index로 이동한다.
MVC의 실행시점은 Controller를 기반으로 한다. 규칙이 Controller 클래스를 상속받는 모든 클래스 즉,
XXXController는 /XXX 형태로 Controller 앞에 있는 이름이 해당 Contorller를 실행하는 키워드가 된다.
URL =>"https://localhost:44340/Demo" 쳐서 이동을 하면
해당 Controller가 View를 찾는 경로를 반환하는 것을 확인할 수 있다.
기본 경로는 /Views/컨트롤러이름에/Index.cshtml(액션이름:MVC의 기본 view 페이지)이고,
그래도 못찾으면 /View/Shared/Index.cshtml을 뒤진다.
+ASP.NET Core는 변경된 부분에 대해서 다시 내부적으로 Compile이 된다. 그래서 서버를 다시 시작하지 않아도 된다.
View만들기
DemoContorller가 찾아 갈수 있는 경로에 매치하여 디렉토리 경로를 생성해준다.
=> [View]-[Demo]-Index.cshtml
Index.cshtml에는 순수한 html + 프로그래밍 관련 코드가 들어온다. Razor syntax사용 가능하다.+Index같은 액션 메소드에서는 보통 return View( )페이지에 어떤 값을 넘겨준다거나 하는 형태로 동작한다.
+Controller라던가 View에서 사용할 어떤 class 혹은 data, datatype은 Models 폴더안에서 작성해 주면 된다.
[출처- https://youtu.be/-gUwwIPkV08]