Razor는 HTML 안에 C# 코드를 넣어 동적인 HTML을 생성할 수 있도록 한다
@{
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
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>