포스트

View로 데이터를 전달하는 방법(ViewData, ViewBag, ViewModel)

ASP.NET에서 Controller에서 View로 데이터를 전달하는 방법은 여러 가지가 있습니다.

대표적으로 ViewData, ViewBag, ViewModel을 사용하여 데이터를 전달할 수 있습니다.

ViewData

ViewData는 Controller와 View 간에 키-값 쌍으로 데이터를 저장하고 전달하는 데 사용됩니다.

ViewDataViewDataDictionary 타입의 객체입니다.

특징

  • 타입 캐스팅이 필요합니다.
  • 유연성이 높습니다.
  • 문자열 키를 사용하여 데이터를 저장하고 접근합니다.

사용법

Controller에서 ViewData 사용

1
2
3
4
5
public ActionResult Index()
{
    ViewData["Message"] = "Hello, World!";
    return View();
}

View에서 ViewData 사용

1
2
3
4
5
@{
    string message = ViewData["Message"] as string;
}

<p>@message</p>

ViewBag

ViewBag동적 속성(dynamic property)으로 데이터를 저장하고 전달하는 방법입니다.

ViewBag은 내부적으로 ViewData를 사용하여 데이터를 저장합니다. 따라서 ViewBagViewData의 간편한 버전이라고 할 수 있습니다.

특징

  • 타입 캐스팅이 필요 없습니다.
  • dynamic 타입을 사용하여 속성처럼 데이터를 저장하고 접근합니다.
  • 코드가 더 간결해집니다.

사용법

Controller에서 ViewBag 사용

1
2
3
4
5
public ActionResult Index()
{
    ViewBag.Message = "Hello, World!";
    return View();
}

View에서 ViewBag 사용

1
<p>@ViewBag.Message</p>

ViewModel

ViewModel은 View에 필요한 데이터를 담는 클래스입니다.

ViewModel을 사용하면 View에 전달할 데이터 구조를 명확하게 정의할 수 있습니다. ViewModel은 강력한 형식의 데이터를 제공하며, 복잡한 데이터 구조를 전달할 때 유용합니다.

특징

  • 강력한 타입을 사용합니다.
  • 모델의 프로퍼티를 통해 데이터를 전달합니다.
  • 뷰에 필요한 모든 데이터를 하나의 객체로 묶어서 전달할 수 있습니다.

사용법

먼저 ViewModel 클래스를 정의합니다.

1
2
3
4
5
public class MyViewModel
{
    public string Message { get; set; }
    public int Number { get; set; }
}

Controller에서 ViewModel 사용.

1
2
3
4
5
6
7
8
9
public ActionResult Index()
{
    var model = new MyViewModel
    {
        Message = "Hello, World!",
        Number = 42
    };
    return View(model);
}

View에서 ViewModel 사용

1
2
3
4
@model MyViewModel

<p>@Model.Message</p>
<p>@Model.Number</p>
이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.