웹 응용프로그램 플랫폼의 핵심 기능 중 하나는 동적 출력이다. ASP.NET MVC에서는 데이터를 뷰에 전달하고, 이를 동적으로 렌더링하는 다양한 방법을 제공한다. 이번 포스팅에서는 ViewBag을 활용해 동적 데이터를 뷰로 전달하는 방법을 알아보자.
ViewBag을 사용한 동적 데이터 전달
MVC에서 컨트롤러에서 뷰로 데이터를 전달할 때, ViewBag을 자주 사용한다.
ViewBag은 **동적 개체(dynamic object)**로, 임의의 속성을 자유롭게 추가할 수 있다.
뷰에서는 ViewBag에 저장된 데이터를 쉽게 사용할 수 있다.
예제: 시간대에 따른 인사 출력
using System.Web.Mvc;
namespace PartyInvite.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ViewResult Index()
{
int hour = DateTime.Now.Hour;
ViewBag.Greeting = hour < 12 ? "Good Morning" : "Good Afternoon";
return View();
}
}
}
- 현재 시간을 기준으로 오전에는 "Good Morning", 오후에는 "Good Afternoon" 메시지가 ViewBag.Greeting 속성에 저장된다.
- 이 데이터는 뷰에서 사용할 수 있다.
뷰에서 동적 데이터 렌더링
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@ViewBag.Greeting World (from the view)
</div>
</body>
</html>
- Razor 뷰 엔진은 @ViewBag.Greeting을 처리하여 동적으로 데이터를 렌더링한다.
- 위 예제에서는 ViewBag에 저장된 인사말과 "World (from the view)" 문자열이 함께 출력된다.
실행 과정
- 브라우저가 /Home/Index URL을 요청한다.
- HomeController의 Index 메서드가 호출된다.
- 현재 시간을 기준으로 ViewBag.Greeting 속성이 설정된다.
- 컨트롤러가 View()를 호출하여 Index.cshtml 뷰를 렌더링한다.
- Razor 뷰 엔진이 @ViewBag.Greeting 표현식을 처리하여 최종 HTML을 생성한다.
- 브라우저에 최종 HTML이 전달된다.
'웹 개발 > ASP .NET' 카테고리의 다른 글
[ASP.NET MVC5] 자동 구현 속성 (0) | 2024.11.25 |
---|---|
[ASP.NET MVC5] MVC 패턴과 샘플 프로젝트 (0) | 2024.11.25 |
[ASP.NET MVC5] 웹 페이지 렌더하기 (0) | 2024.11.25 |
[ASP.NET MVC5] 프로젝트 생성과 Hello World 출력하기 (0) | 2024.11.25 |
[ASP.NET] Controller, View (0) | 2024.09.30 |