ASP.NET MVC3

이번 포스트는 ASP.NET MVC3에 대한 여러 강좌를 모아모아~ 정리한 자료입니다.
주로 DEVLEC의 자료가 많음을 밝힙니다.
자세한 강좌 내용이나 소스를 원하시면 아래의 출처를 방문하여 주시기 바랍니다.

자료 출처

ASP.NET MVC3 기본

  • http://도메인/컨트롤러명/액션명
  • HomeController을 만들면 『http://localhost:○○/』이렇게 치시면 그냥 『/Home/Index』가 나옴
  • Action : Control에 public 으로 설정된 메소드, Index는 생략가능 (Global.asax에 정의됨)

Razor(레이저) 구문

ASP.NET 종류

  • ASP.NET WEB FORM
  • ASP.NET MVC : ASP.NET WEB FORM 에 MVC 프레임워크가 추가됨
  • ASP.NET WEB PAGE (WEB MATRIX 사용)

헬퍼 메서드 : @helper

하나의 View에서 사용시

여러개의 View에서 사용시

  1. ~/App_Code에 구성하면 여러 페이지에서 사용 가능. 예를 들면 Copyright를 여기저기 사용가능
  2. 프로젝트 우클릭 > 추가 > 새폴더 > App_Code
  3. App_Code 폴더 우클릭 > 새항목 > MVC3 VIEW PAGE(RAZOR) > 파일이름은 MyHelper.cshtml
  4. 내용을 다 지우고 ShowCopyright 라는 헬퍼 메서드 생성함
  5. 필요한 View에서 @MyHelper.ShowCopyright()

 

데이터 전달

controler

View

Model

결과

 

ViewBag & Html.Raw()

ViewBag

  • dynamic타입(런타임에 타입   결정), ViewData[]의 업그레이드
  • 주의사항 : ViewData[“Title”] 는 ViewData.Title과 같은 값을 참조한다.

Html.Raw()

  • encoding하지 않고 그대로 출력하고 싶을때.
  • “<i>”를 인코딩하면 “&lt;i&gt;” 로 변경되지만, Html.Raw()라는 헬퍼메소드를 사용하여 “<i>”로 출력가능
  • html이나 script등을 변환없이 출력시 사용

Controller

View

결과

 

Partial View, Layout, ViewStart

Partial View

  • 부분 페이지 : ascx와 같은 역할
  • @Html.Partial(“_Details”, Model)
  • Views > Home > 우클릭 > 추가 > 새항목 > MVC 3 부분 페이지 (Razor) > 생성된 부분 페이지에 코드 넣고 > 부분 페이지 포함할 곳에 @Html.Partial(“_Favoriate”, Model)
  • 일반적으로 _를 접두어로 넣어서 만든다. (Favorite.cshtml 에서 부분페이지를 생성시 _Favorite.cshtml)

Layout

  • 마스터 페이지에 레이아웃 생성하고, View에서는 본문만 작성
  • @Url.Content(“~/Content/Site.css”) : ~는 Context Root로 변경됨
  • @RenderBody() : 레이아웃에서 본문이 들어갈 곳
  • @RenderSection(“kimstar”, required:false)
    • 각 View에서 section을 만들면 레이아웃에서 해당하는 Section이 보여짐
    • @section kimstar { <h3>Kimstar 입니다.</h3>  }
    • required:false를 추가하면 kimstar section이 없어도 오류가 안난다.
  • IsSectionDefined() :
    • section이 없으면 기본으로 보여주도록 layout을 수정하자.
    • @if(IsSectionDefined(“kimstar”)) { @RenderSection(“kimstar”) } else { <h3>기본입니다.</h3> }
  • Layout 지정
    • _ViewStart.cshtml 에 _Layout.cshtml이 레이아웃으로 지정되어 있다.
    • 레이아웃 안쓰는 View에서는 : @{ Layout = null; }
    • 다른 레이아웃 지정하려는 View에서는 : @{ Layout = “~/Views/Shared/_MyLayout.cshtml”; }

ViewStart

  • _VewStart.cshtml : 모든 View가 렌더링되기 전에 제일 먼저 호출되어 상속됨
  • 예제
 

라우팅

개요

  • Routing : 물리적파일과 논리적 URL을 연결
  • ASP.NET 4.0 엔진에 포함됨 : System.Web.Routing
  • SEO (Search Engine Optimization) : 쿼리 파라미터 없어짐, 읽기 쉬움
  • URL을 controller와 action method로 연결해줌

Global.asax.cs

  • Application_Start()는 제일먼저 실행되는 메서드임.
  • Application_Start()의 RegisterRoutes()는 라우팅 규칙을 등록시킴.

  • Controller 에서 아래와 같이 라우팅을 처리한다.
 

Output 캐싱

개요

  • Action 또는 Contrller에 Duration과 VaryByParam 등을 설정
  • [ChildActionOnly] : 파샬뷰처럼 자식에만 캐싱을 설정
  • output cache 액션 필터 설정
    • VaryByParam :
    • Location
    • VaryByHeader
    • VaryByCustom
    • SqlDependency

예제

  • Controller

  • View

  • 결과 (20초 동안 안바뀐다)
 

새로운 Action Result

 

Web Forms과 MVC3 함께 사용

  • ASP”.NET 웹 응용 프로그램”으로 프로젝트 생성
  • nuget package 설치
    • PM> Install-Package AddMvc3ToWebForms
  • 웹사이트 실행 후 확인
    • Web Form 테스트 : ~/Default.aspx
    • MVC 테스트 : ~/Home/About

Notice

  • 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 크리에이티브 커먼즈 라이선스
  • 저작권과 관련된 파일요청 및 작업요청을 받지 않습니다.
  • 댓글에 대한 답변은 늦을 수도 있습니다.
  • 댓글 남기기