ASP.NET Core에서 _로 시작하는 파일들의 용도
1. _ViewStart.cshtml - 뷰 시작 파일
용도:
모든 뷰가 렌더링되기 전에 자동으로 실행되는 파일
공통적으로 적용할 설정들을 정의 (주로 Layout 설정)
뷰 계층 구조에서 상위 폴더에 있으면 하위 폴더의 모든 뷰에 적용
현재 예제에서의 내용:
@{
Layout = "_Layout";
}
실행 절차:
컨트롤러에서 뷰를 반환할 때
ASP.NET Core는 해당 뷰 파일이 있는 폴더부터 시작해서 상위 폴더로 올라가며 _ViewStart.cshtml 파일을 찾음
찾은 모든 _ViewStart.cshtml 파일들을 상위부터 하위 순으로 실행
실제 뷰 파일 실행 전에 이 설정들이 적용됨
2. _ViewImports.cshtml - 뷰 임포트 파일
용도:
모든 뷰에서 공통으로 사용할 using 구문, TagHelper, 기타 지시문들을 정의
각 뷰 파일마다 반복적으로 작성해야 하는 임포트들을 한 곳에서 관리
현재 예제에서의 내용:
@using my_first_app
@using my_first_app.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
실행 절차:
뷰가 컴파일될 때 ASP.NET Core는 뷰 파일이 있는 폴더부터 상위 폴더로 올라가며 _ViewImports.cshtml 파일들을 찾음
모든 _ViewImports.cshtml의 내용이 해당 뷰에 자동으로 포함됨
뷰에서 별도로 using이나 TagHelper를 선언하지 않아도 사용 가능
3. _Layout.cshtml - 레이아웃 파일
용도:
웹 페이지의 공통 구조(HTML 골격)를 정의
헤더, 네비게이션, 푸터 등 모든 페이지에 공통으로 들어가는 요소들을 포함
@RenderBody()를 통해 개별 뷰의 내용이 삽입될 위치를 지정
주요 구성 요소:
HTML 문서 구조 (<!DOCTYPE html>, <head>, <body>)
CSS/JavaScript 파일 참조
네비게이션 메뉴
@RenderBody() - 개별 뷰 내용이 렌더링될 위치
@RenderSectionAsync("Scripts", required: false) - 개별 뷰에서 정의한 Scripts 섹션을 렌더링
실행 절차:
_ViewStart.cshtml에서 Layout = "_Layout"으로 설정
컨트롤러에서 뷰를 반환할 때
ASP.NET Core는 지정된 레이아웃 파일을 찾음
레이아웃의 @RenderBody() 위치에 실제 뷰 내용을 삽입
최종 HTML 문서가 완성되어 브라우저로 전송
4. _ValidationScriptsPartial.cshtml - 검증 스크립트 부분 뷰
용도:
클라이언트 사이드 폼 검증을 위한 JavaScript 라이브러리들을 포함
필요한 페이지에서만 선택적으로 포함할 수 있는 부분 뷰
현재 예제에서의 내용:
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
사용 방법:
@section Scripts {
<partial name="_ValidationScriptsPartial" />
}
전체 실행 절차 및 흐름
1. 요청 처리 시작
브라우저 요청 → 라우팅 → 컨트롤러 → 액션 메서드
2. 뷰 렌더링 과정
1. 컨트롤러에서 View() 반환
2. _ViewImports.cshtml 처리 (using, TagHelper 등 적용)
3. _ViewStart.cshtml 처리 (Layout 설정 등)
4. 지정된 Layout 파일 로드
5. Layout의 @RenderBody() 위치에 실제 뷰 내용 삽입
6. @RenderSection 처리 (Scripts, Styles 등)
7. 최종 HTML 생성 및 응답
3. 파일 우선순위
Views/
├── _ViewImports.cshtml (전역)
├── _ViewStart.cshtml (전역)
├── Home/
│ ├── _ViewImports.cshtml (Home 폴더용, 있다면)
│ ├── _ViewStart.cshtml (Home 폴더용, 있다면)
│ └── Index.cshtml
└── Shared/
├── _Layout.cshtml
└── _ValidationScriptsPartial.cshtml
4. 실제 Index.cshtml 렌더링 예시
요청: /Home/Index
_ViewImports.cshtml 적용:
my_first_app, my_first_app.Models 네임스페이스 사용 가능
ASP.NET Core TagHelpers 사용 가능
_ViewStart.cshtml 적용:
Layout으로 _Layout 설정
_Layout.cshtml 로드:
HTML 문서 구조, CSS, JavaScript 파일 로드
네비게이션 메뉴 렌더링
5.Index.cshtml 내용이 @RenderBody() 위치에 삽입
<div class="text-center">
<h1 class="display-4">Welcome to the ASP.NET Core 9!</h1>
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
6.최종 HTML 생성 및 브라우저로 전송
이러한 구조를 통해 ASP.NET Core는 DRY (Don't Repeat Yourself) 원칙을 따르며, 코드 중복을 최소화하고 유지보수성을 높입니다. _로 시작하는 파일들은 특별한 의미를 가지며, 프레임워크에 의해 자동으로 처리되는 시스템 파일들입니다.
파워빌더에서 .Net dll 사용하기 (0) | 2025.05.16 |
---|---|
파워빌더 에서 mssql output 파라미터 못 읽어오는 문제 해결 방법 (0) | 2025.05.16 |
Win32Exception: 신뢰되지 않은 기관에서 인증서 체인을 발급했습니다. (0) | 2024.01.31 |
React + ASP.Net(BackEnd)로 사용하기 (0) | 2023.09.13 |
2022년 연말정산간소화 pdf xml 파싱 (0) | 2022.12.26 |
Blog is powered by kakao / Designed by 미스터짱