05 View Razor

vencott·2021년 6월 2일
0

ASP.NET

목록 보기
5/9

Razor는 HTML 안에 C# 코드를 넣어 동적인 HTML을 생성할 수 있도록 한다

Razor의 기본 문법

  1. 간단한 inline 표현식은 @ 뒤에 변수명 혹은 함수명을 기재한다
  2. 하나 이상의 C# 문장 또는 문장블럭을 표현하기 위해 @{…} 블록을 사용한다
@{
    ViewBag.Title = "Report Data";
    string today = DateTime.Now.ToShortDateString();
}
 
<h2>@ViewBag.Title.</h2>  @*Inline C# 코드*@
<h4>@today</h4>
 
<p>
    Report Data...
</p

조건문

if/switch 앞에 @를 붙이고 블록 안에 HTML문을 그대로 사용하면 Razor 엔진이 알아서 랜더링한다

@{
    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>

반복문

for/foreach/while 앞에 @를 붙이고 블록 안에 HTML과 C#문을 혼용에서 사용하면 Razor 엔진이 알아서 랜더링한다

@{
    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()의 파라미터로 모델 객체를 전달하였을 경우, Razor에서는 "@model {모델타입}"과 같이 View 파일 상단에 어떤 타입이 전달되었는지를 쓴다

이렇게 정의된 모델은 View 클래스의 "Model"이라는 속성으로 해당 객체의 속성을 Strong Type 형태로 사용할 수 있다

주의할 점은 타입을 지정할 때, 클래스 타입 앞에 네임스페이스를 함께 써야 하며 @using을 써서 미리 네임스페이스를 선언하는 것이 보편적이다

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

출처: http://www.csharpstudy.com/

profile
Backend Developer

0개의 댓글