Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

ASP.NET MVC C#의 ViewData란 무엇인가? 개념부터 사용 예제까지

ViewData는 ASP.NET MVC에서 컨트롤러(Controller)와 뷰(View) 사이에 데이터를 전달하기 위해 사용되는 객체 딕셔너리입니다. 문자열을 키(Key)로 사용하여 데이터를 저장하고 조회할 수 있으며, 내부적으로 키-값(Key-Value) 쌍으로 구성되어 있습니다.

ViewData의 주요 특징

  • 데이터 전달 방향은 컨트롤러 → 뷰로만 가능하며, 그 반대 방향(뷰 → 컨트롤러)으로는 사용할 수 없습니다.
  • 모든 키는 반드시 문자열(string)이어야 합니다.
  • 데이터는 현재 요청(Request) 동안에만 유효합니다. 즉, 리다이렉션이 발생하면 ViewData의 값은 유지되지 않습니다.

ViewData에 데이터 저장하기

ViewData["countries"] = countriesList;

ViewData에서 데이터 가져오기

string country = ViewData["MyCountry"].ToString();

ViewData 사용 시 주의사항

ViewData는 컴파일 타임 오류 검사를 지원하지 않습니다. 예를 들어, 키 이름을 잘못 입력(오타)해도 컴파일 시점에는 오류가 발생하지 않으며, 런타임에 실행되기 전까지는 문제를 알 수 없습니다. 따라서 키 이름을 일관성 있게 관리하는 것이 중요합니다.

컨트롤러 예제

다음은 HomeController에서 국가 목록을 ViewData에 저장하는 예제입니다.

using System.Collections.Generic;
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
    public class HomeController : Controller{
        public ViewResult Index(){
            ViewData["Countries"] = new List<string>{
                "India",
                "Malaysia",
                "Dubai",
                "USA",
                "UK"
            };
            return View();
        }
    }
}

뷰(View) 예제

저장된 ViewData 값을 뷰에서 읽어와 화면에 출력하는 코드입니다. ViewData는 object 타입을 반환하므로 반드시 적절한 타입으로 캐스팅해야 합니다.

@{
    ViewBag.Title = "Countries List";
}
<h2>Countries List</h2>
<ul>
@foreach(string country in (List<string>)ViewData["Countries"]){
    <li>@country</li>
}
</ul>

실행 결과

위 코드를 실행하면 브라우저에 다음과 같이 국가 목록이 순서 없는 리스트 형태로 출력됩니다.

ASP.NET MVC C#의 ViewData란 무엇인가? 개념부터 사용 예제까지

마무리 정리

ViewData는 MVC 패턴에서 컨트롤러가 뷰에 간단한 데이터를 전달할 때 유용하게 활용됩니다. 다만 타입 캐스팅이 필요하고 컴파일 타임 검사가 이루어지지 않는다는 점에서, 보다 안전한 방식을 원한다면 강력한 타입(strongly-typed) 모델이나 ViewBag 사용도 함께 고려해 볼 수 있습니다.