관리 메뉴

웹개발자의 기지개

[ASP.NET Core MVC] ViewData, ViewBag, TempData 비교 본문

ASP.NET/ASP.NET Core

[ASP.NET Core MVC] ViewData, ViewBag, TempData 비교

http://portfolio.wonpaper.net 2022. 10. 21. 06:17

Controller 에서 View 로 데이터 이동시에 ViewDataViewBag 이 주로 이용되는데, 

ViewBag 은 ViewData 와 거짐 같은넘이다. ViewBag 은 형변환이 필요없는 Dynamic 한 형태이며, ViewData 의 Wrapper 이다.

ViewData 와 TempData 는 key와 value 값을 가지는 Dictionary 형태이며, 형변환이 필요하다.

 

TempData 는 연이은 request 간의 데이터 이동시에 이루어지는데, 한번 설정되고 다음에서 읽여질때 일시적으로만 이용되고 바로 소멸되는 간단한 세션형태의 놈이다.

그래서 삭제처리 Controller 에서 DB 레코드를 삭제하고 이를 삭제하였다는 알림메세지를 간단히 다음 request 페이지에 표시해줄때 유용하게 쓸수 있다.

 

[ ViewData 참고예제 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Controller Code
public ActionResult Index()
{
      List<string> Student = new List<string>();
      Student.Add("Jignesh");
      Student.Add("Tejas");
      Student.Add("Rakesh");
 
      ViewData["Student"= Student;
      return View();
}
//page code
<ul>
    <foreach (var student in ViewData["Student"as List<string>)
        { %>
    <li><%: student%></li>
    <% } %>
</ul>
cs

 

[ ViewBag 참고예제 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Controller Code
public ActionResult Index()
{
      List<string> Student = new List<string>();
      Student.Add("Jignesh");
      Student.Add("Tejas");
      Student.Add("Rakesh");
 
      ViewBag.Student = Student;
      return View();
}
//page code
<ul>
    <foreach (var student in ViewBag.Student)
        { %>
    <li><%: student%></li>
    <% } %>
</ul>
cs

 

[ TempData 참고예제 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Controller Code
public ActionResult Index()
{
    List<string> Student = new List<string>();
    Student.Add("Jignesh");
    Student.Add("Tejas");
    Student.Add("Rakesh");
 
    TempData["Student"= Student;
    return View();
}
//page code
<ul>
    <foreach (var student in TempData["Student"as List<string>)
        { %>
    <li><%: student%></li>
    <% } %>
</ul>
cs

 

 

 

참고 : https://www.c-sharpcorner.com/blogs/viewdata-vs-viewbag-vs-tempdata-in-mvc1

Comments