26.1. MVC 패턴
- Controller : 로직처리
- View : 사용자 인터페이스
- Model : 데이터
26.2. 컨트롤러 클래스
Action 메서드를 구현하는 클래스.
요청 처리, 사용자 입력 처리, 로직수행
26.3. 액션 메서드
컨트롤러에서 뷰를 호출하거나 데이터를 전달하는 메서드
ViewData, ViewGag 개체를 View 페이지에 전달할 수 있다.
26.4. 실습
별거없음
26.5. 액션 반환값
주요 액션 반환값
- View() – 액션 메서드에 해당하는 뷰 페이지 실행. 액션 메서드 이름 = 뷰 페이지 이름
- RedirectToAction(URL) – 특정 액션 메서드 실행(이동).
RedirectToAction(“Index”, “Home”); - Content(“문자열”) – 특정 문자열 반환
- ContentResult() – HTML을 직접 반환
return new ContentResult() { Content = html, ContentType = “text/heml;charset=utf-8” };
26.6. 실습
별거없음
26.6.4. Redirect로 시작하는 액션 메서드 반환값
액션 메서드를 실행하고 나서 새로운 액션 메서드 또는 URL로 이동하고자 할 때는 Redirect로 시작하는 액션 반환값을 사용한다.
26.7. 뷰페이지
26.7.1. 컨트롤러와 뷰에 대한 규칙
각각의 컨트롤러와 같은 이름의 서브폴더를 생성하고, 각각의 액션 메서드와 같은 이름의 cshtml 뷰페이지를 생성해야 한다.
공통 페이지는 Shared 폴더에 위치한다.
26.8. 레이저 표현식
26.8.2. 링크 경로 해결:
~/
26.9. 실습
별거없음
26.10. MVC 프레임워크에서의 레이아웃
레이아웃은 Views/Shared 폴더에 _Layout.cshtml 파일로 존재
26.10.1. _Layout.cshtml
각 페이지의 제목은 각각의 페이지의 ViewBag.Title 속성을 사용한다.
Layout 프로퍼티를 통하여 각각의 페이지의 레이아웃을 지정할 수 있다.
@{ Layout = "_Layout"; }
26.10.2. <enviroment /> 태그 헬퍼
특정 CSS 또는 JS 파일에 대한 링크를 Dev, Staging, Prod 환경의 세가지 상태에 맞게 적용하고자 할 때 사용한다.
26.10.3. RenderBody() 메서드와 RenderSection(name, required) 메서드
- RenderBody() : 각각의 뷰 내용이 표시됨
- RenderSection(name, required) : Scripts, Banners, Sidebars 등 특정한 섹션을 추가할 수 있다.
26.10.4. _ViewStart.cshtml
모든 뷰가 렌더링 되기전에 제일 먼저 호출되는 페이지
_ViewStart.cshtml 파일은 Views폴더에 위치
공통 레이아웃은 반드시 이곳에 정의한다.
26.10.5. _ViewImports.cshtml
네임스페이스 공통사용시 정의
@addTagHelper <- 이건 뭐지??
26.10.6. 부분 뷰
Partial view
페이지에 표시하고자 할때는 Html.Partial() 메서드 사용
Html.PartialAsync() 비동기로 표시?
26.11. 모델 클래스
DTO (Data Transfer Object), Entity, Business Object, Domain Model, View Model, Presentation Model
26.11.1. 모델 작성 시 제약 조건 설정
모델 작성시 Attribute 를 사용하여 옵션을 줄 수 있다.
DataType, Display, Validation(Required, StringLength, RegularExpression, Compare, 등)
26.12. 뷰에 데이터 전송 방법
Model, ViewBag(ViewData), TempData
26.12.1. ViewBag과 ViewData
액션메서드를 이용하여 간단한 정보를 View에 전달할때 사용
26.12.2. 모델 개체 사용
모델 데이터를 View에 전달. 강력한 형식(Strongly Typed)의 뷰 페이지가 된다.
26.12.3. TempData
다음번 TempData를 요청하기 전까지 유효한 임시 저장소
Session 기반으로 동작하며, Microsoft.AspNetCore.Session과 Microsoft.Framework.Caching.Memory 의 참조가 필요하다.
26.13. 실습
View에서 @model 키워드를 사용하여 강력한 형식의 뷰를 만든다.
26.14. 실습
액션메서드에서 [HttpGet], [HttpPost] 어트리뷰트를 이용하여 Form 관련 실습
26.15. 실습
별거없음. 전체 실습
– 참고자료
[embeddoc url=”http://192.168.10.240:8080/wp-content/uploads/2017/09/26장.Core-모델-뷰-컨트롤러.pdf” download=”all”] – ASP.NET Korea Study Group, 안지오