본문 바로가기

Backend 개발/.NET

ASP.NET Controller 에서 View로 데이터 전달하는 방법

반응형

ASP.NET 기반으로 웹 개발 시, Controller에서 뷰로 데이터를 전달하는 방법이 여러가지가 있다. 각 속성/클래스에 대한 특징은 이후에 더 자세히 다루고 여기서는 간단한 예제 및 방법만 확인한다.

1. ViewData 이용

// 컨트롤러
public IActionResult testDataView() {
    // 1. ViewData 이용 - 딕셔너리 구조
    ViewData["myMsg"] = "Hello reponse";
    ViewData["num1"] = 100;

    return View();
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
</head>
<body>
   @ViewData["num1"]
   <br/>
   @ViewData["myMsg"]
   <br/>
</body>
</html>

2. ViewBag 이용

// 컨트롤러
public IActionResult testDataView() {
    // 2. ViewBag 이용 - 동적으로 속성 추가 가능
    ViewBag.MyTest = "hello myTest";
    ViewBag.num2 = 200;
    ViewBag.arr  = new List<string>{"abc", "def"};

    return View();
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
</head>
<body>
    @ViewBag.MyTest
    <br/>
    @ViewBag.num2
    <br/>
    <ul>
    @foreach(var data in ViewBag.arr) {
        <li>@data</li>
    }
   </ul>
</body>
</html>

3. ViewModel 이용

// 컨트롤러
public IActionResult testDataView() {
    // 3. ViewModel 이용 - return View 파라미터에 넘겨줘야 함
    var numList = new List<int>{1, 2, 3};

    return View(numList);
}
@model List<int>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
</head>
<body>

   <ul>
    @foreach(var data in Model) {
        <li>@data</li>
    }
   </ul>
   <p>모델 count: @Model.Count</p>
</body>
</html>
728x90
반응형