C#

MVC View Razor

Razor는 상대적으로 간단한 문법을 가지고 있으며, HTML 안에 C# (혹은 VB) 코드 넣어 동적인 HTML을 생성할 수 있도록 한다. 기본적으로 Razor는 하나 이상의 C# 문장 혹은 문장블럭을 표현하기 위해 @{ ... } 블럭을 사용한다. 블럭 안의 C# 코드는 표준 C#에서와 마찬가지로 세미콜론으로 둔다. 그리고 간단한 Inline 표현식은 @ 사인 뒤에 변수명 혹은 함수명을 쓴다. 기본적으로 @ 사인 안의 문장은 C# 문장이라고 보면 된다. Razor에서 코멘트는 @* *@ 으로 둘러 싼다.

@{
    // 일반 C# 코드 사용
    ViewBag.Title = "Report Data";
    string today = DateTime.Now.ToShortDateString();
}

<h2>@ViewBag.Title.</h2>  @*Inline C# 코드*@
<h4>@today</h4>

<p>
    Report Data...
</p>

Razor 조건문

Razor에서 조건문을 사용하기 위해 if ... else 문, if ... else if 문, 혹은 switch 문을 사용할 수 있다. if 조건문은 @if 처럼 if 앞에만 @ 사인을 붙이면 되고, 블럭 안에 HTML문을 그대로 사용하면 Razor 엔진이 알아서 랜더링 해준다. 마찬가지로 switch 블럭도 처음 @switch을 사용하고 해당 블럭을 C# 처럼 사용하고 중간에 HTML을 혼용해서 사용할 수 있다. 아래 예제는 if 문과 switch 문을 사용한 예이다.

@{
    int count = ViewBag.Count;
}

<p>
    @*조건문*@
    @if (count <= 0)
    {
        <div>데이타가 없습니다.</div>
    }
    else
    {
        <div>@count 건의 데이타가 있습니다.</div>
    }

    @switch (count)
    {
        case 1:
            <div>하나</div>
            break;
        case 2:
            <div>둘</div>
            break;
        default:
            <div>셋 이상</div>
            break;
    }
</p>

Razor 반복문

Razor에서 반복문을 사용하기 위해 for 문, foreach 문, while 문을 사용할 수 있다. 각각의 반복문은 @for, @foreach, @while처럼 앞에 @ 사인을 붙이면 되고, 블럭 안에서는 C# 문과 HTML문을 혼용해서 사용하면 Razor 엔진이 알아서 랜더링 해준다. 아래 예제는 for 문, foreach, @while 문을 사용한 간단한 예이다.

@{
    int count = ViewBag.Count;
    string[] list = { "A", "B", "C"};
}

<p>
    @*반복문*@
    @for (int i = 0; i < count; i++)
    {
        <div>@i</div>
    }

    @foreach (var item in list)
    {
        <p>@item</p>
    }    

    @{ int ix = 1; }
    @while(ix < 10)
    {
        <div>@ix</div>
        ix++;
    }
</p>

@model 선언

Controller에서 데이타를 View에 전달하기 위해서는 ViewBag, ViewData, TempData을 사용하거나 Controller.View() 메서드에 모델 객체를 파라미터로 넘기는 방식을 사용한다. 모델 객체가 전달되었을 때, Razor에서는 "@model 모델타입" 과 같이 View 파일 상단에 어떤 모델 타입이 전달되었는지는 쓰게 된다. 이렇게 정의된 모델은 View 클래스의 "Model" 속성으로 해당 객체의 속성을 Strong Type 형태로 사용할 수 있다. 즉, 모델 객체에 Message 속성이 있으면, @Model.Message 와 같이 사용할 수 있으며, VS에서 인텔리센스 기능도 제공한다. 또한, 한가지 주의할 점은 View에서 클래스 타입을 지정할 때, 클래스 타입 앞에 네임스페이스를 함께 써야 한다는 점이다. 물론 모든 클래스 앞에 네임스페이스를 쓸 필요 없이 맨 앞에 @using 을 써서 미리 네임스페이스를 선언할 수도 있다.

// View에서 모델 지정 및 사용

@using GuestBook.Models
@model Guest

<h2>@ViewBag.Title</h2>
<p>
    @ViewData["MethodName"]
    <br />
    
    <div>@Model.Id : @Model.Name</div>
    <div>
        @Model.Message
    </div>    
</p>

본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

Previous Next Print