ViewBag이란?
- 컨트롤러 → 뷰로 데이터 전달할 때 사용하는 dynamic 객체
- 타입 지정 없이 .속성이름으로 자유롭게 설정 가능
사용법


특징
- 타입: dynamic (컴파일 시 타입 체크 X)
- 선언: ViewBag.속성 = 값
- 사용: @ViewBag.속성
- Razor에서 바로 사용 가능
ViewBag vs ViewData vs Model
| 항목 | ViewBag | ViewData | Model |
| 타입 | dynamic | Dictionary<string, object> | 강력한 타입 (class/DTO) |
| 선언 | ViewBag.Name | ViewData["Name"] | Model.Name |
| 장점 | 코드 짧고 편함 | 오래된 방식과 호환 | IntelliSense, 타입 안정성 |
| 단점 | 오타 잡기 어려움 | 문자열 키라 실수 가능 | ViewModel 필요 |
사용 추천 상황
- 간단한 값 전달 (예: 페이지 제목, 메시지)
- 임시 데이터 처리
- 복잡한 구조가 아닐 때만
주의
- ViewBag은 동적이라 오타 나도 런타임에서 에러
- 실무에선 복잡한 구조일수록 ViewModel 쓰는 게 안정적