MVC Project 기본 템플릿 폴더 및 파일 (mvc+api)
App_Data : 파일형태의 데이터파일이 존재하는 폴더(Sql Server Express, Access, or SQLite 파일DB)
App_Start : 웹 어플리케이션이 실행되는 시점에서의 프로그램밍 방식으로 환경 설정하는 공간
Areas : Web API 도움말 페이지와 관련된 모든 코드 파일들이 위치하는 공간
Content : CSS 및 CSS관련 리소스를 저장관리하는공간(유동적임)
Controllers : MVC의 Controller 클래스들을 존재하는 공간
fonts: 폰트폴더(유동적임)
Models : MVC에서 Model 클래스들이 존재하는 공간
Providers :
Results :
Scripts: JQuery등 각종 자바스크립트 파일 및 스크립트 라이브러리 파일저장공간
Views : MVC에서의 View들이 존재하는공간,뷰는 컨트롤러에 의해서 자동으로 만들수 있음.
Home 폴더: Home컨트롤러 관련 뷰(화면) 파일들이 존재하는 공간
Shared 폴더: 각 화면들에서 공유해서 사용하는 화면들이 존재하는공간(레이아웃(마스터) 화면,파셜(부분)뷰화면등
_Layout.cshtml : 모든화면의 공통영역인 레이아웃(마스터)화면 뷰파일임.
_ViewStart.cshtml : default 레이아웃 파일 지정
Applicationinsights.config : dll 종속성????????
Global.asax : 어플리케이션의 실행에서 부터 종료까지 Application의 생애주기를 관리할수 있는 전역정보관리 파일
전통적인 ASP.NET 웹사이트에서 Global.asax.cs 파일이 하는 역할을 OWIN 기반 웹 어플리케이션에서는 바로 이 Startup.cs가 담당한다.
packages.config : 패키지 정보구성정보를 관리합니다.
Web.config : 웹 어플리케이션 각종 환경설정정보를 XML파일 형태로 관리합니다.
favicon.ico : 즐겨찾기 및 브라우저 탭에 보여지는 아이콘
웹계정 루트(root) 디렉토리에 16x16 과 32x32의 이미지를 하나에 품은(multiple sizes) favicon.ico 파일을 위치시킴으로써 설정!
MVC Project 기본 폴더 구조 변경
폴더추가 및 삭제
Contents 폴더 생성
scirpts 폴더 : Contents/js 폴더로 이동
favicon.ico : Contents/image/ico 폴더로 이동
MVC Naming Rule
controller 명 : "이름명"+"Controller"
layout 페이지 명 : "_LayOut" + 레이아웃페이지명.cshtml
(Razor를 이용한 웹 개발툴인 웹매트릭스에서 레이아웃 페이지가 브라우저에서 직접 호출되지 않도록 제한하기 위하여 시작된 규칙으로 MVC환경에서는 "_"로 시작하지 않아도 무방하나 해당 규칙을 차용하여 사용중임)
Project Template 정리
MVC
js, css 관련 정리
Content, Script 폴더 제거 (bootstrap,jquery,Modernizr)제거 후 수동 설치 사용
script,css 등을 bundle로 관리를 위해 Microsoft.AspNet.Web.Optimization 패키기 설치(nuget 검색 Optimaization)
- 종속성에 의해 Antlr,WebGrease 패키지도 같이 추가됨
- 사용하기 위해 js.css 추가하는 cs파일(BundleConfig.cs)과 시작시에 cs파일을 load하는 구문 Global.asax작성
- Views\web.config에 Razor view 설정에 Optimaization 추가해야 사용가능
1
2
3
4
5
6
7
<system.web.webPages.razor>
<pages>
<namespaces>
<add namespace="System.Web.Optimization"/>
</namespaces>
</pages>
</system.web.webPages.razor>
정보(개념)
Controller 가 Model 을 View로 보내는 방법
ViewBag (ViewData 이후버전) 객체 이용하는 방법
장점 : 이전버전인 ViewData는 Object형태로 전송되었기 때문에 변환이 필요하나, ViewBag은 변환없이 사용가능
사용이 간편하며, ViewBag 은 MasterPage 와 PartialPage 에서 공유할수 있음.
단점 : Dynamic Type인 ViewBag은 Runtime시에만 type 추론이 가능하므로 인텔리전스가 동작하지 않음
StrongView 이용하는 방법
장점 : Controller에서 Model을 전송하는 보편적인 방법으로, type추론이 가능하므로 인텔리전스 사용가능
컴파일시 타입 체크 가능.
단점 : 다양한 Model을 수용하지 못함