ASP.NET에서의 데이터 전송 및 상태 관리
웹 애플리케이션을 개발할 때, 여러 페이지 간에 데이터를 전달하거나, 특정 데이터 상태를 유지할 필요가 자주 있다.
ASP.NET에서는 이를 위한 다양한 방식이 제공된다. 여기서는 ViewBag, Session, TempData와 그 외의 옵션들에 대해 살펴보고, 각 방법의 특징과 사용 예시를 정리해보고자 한다.
1. ViewBag
ViewBag은 컨트롤러에서 뷰로 데이터를 전달하기 위한 동적 객체이다.
- 생존 범위: 단일 요청 사이클, 같은 페이지 요청에서만 유효하며, 새로고침이나 다른 페이지 요청 시 데이터가 초기화된다.
- 사용 예시: 단순히 컨트롤러에서 뷰로 데이터를 전달할 때 유용하다.
public ActionResult Index(){
ViewBag.Message = "Hello, ASP.NET!";
return View();
}
2. ViewData
ViewData는 ViewBag과 유사하지만, 딕셔너리 방식으로 키-값 쌍을 관리한다.
- 생존 범위: 단일 요청 사이클 (마찬가지로 새 요청 시 초기화된다).
- 사용 예시: 키를 문자열로 지정하여 관리할 수 있다.
public ActionResult Index(){
ViewData["Message"] = "Hello, ASP.NET!";
return View();
}
3. TempData
TempData는 Session을 기반으로 작동하며, 단일 요청 이후에도 데이터가 남아있는 것이 특징이다.
- 생존 범위: 현재 요청 + 이후 한 요청
- 사용 예시: 페이지 리다이렉트 후에도 값을 유지할 필요가 있을 때 사용된다. 예를 들어, 에러 메시지를 잠깐 표시할 떄 유용하다.
public ActionResult Save(){
TempData["Message"] = "Data saved successfully!";
return RedirectToAction("Confirm");
}
4. Session
Session은 각 사용자별로 긴 지속성을 가지는 데이터 저장소이다.
- 생존 범위: 세션이 유지되는 동안 (기본적으로 사용자가 브라우저를 닫거나 세션 타임아웃 발생 전까지)
- 사용 예시: 로그인 상태 유지, 사용자의 환경 설정 저장 등에 사용된다.
public ActionResult Login(){
Session["UserName"] = "JohnDoe";
return RedirectToAction("Dashboard");
}
5. Application State
Application State는 애플리케이션 전체에서 공용으로 사용되는 데이터 저장소이다. 모든 사용자가 접근할 수 있어 특정 상황에서 유용하다.
- 생존 범위: 애플리케이션의 수명(서버 재시작 시 초기화)
- 사용 예시: 사용자 카운트 등 앱 전역의 공통 데이터에 적합하다.
Application["UserCount"] = 100;
6. Cookies
Cookies는 클라이언트 쪽에 저장되는 작은 데이터 파일로, 브라우저에 정보를 저장할 수 있다.
- 생존 범위: 쿠키 만료 설정에 따름(기본적으로 브라우저가 종료될 때 삭제되지만, 지속형 쿠키 설정 가능)
- 사용 예시: 브라우저가 닫힌 후에도 데이터를 유지해야 할 때, 예를 들어 로그인 상태를 유지할 때 사용된다.
HttpCookie cookie = new HttpCookie("UserSettings") {
Value = "darkMode",
Expires = DateTime.Now.AddDays(7)
};
Response.Cookies.Add(cookie);
결론
ASP.NET에서 제공하는 다양한 데이터 저장 방식을 이해하고 올바르게 활용하면, 데이터의 범위와 유지 기간을 쉽게 관리할 수 있다. 각각의 방법은 특정 상황에 적합하므로, 목적에 따라 알맞은 방식을 선택하여 애플리케이션의 효율성와 유지 보수성을 높여보자.
#References
https://www.scholarhat.com/tutorial/mvc/viewdata-vs-viewbag-vs-tempdata-vs-session
https://www.codeproject.com/Articles/1223695/Passing-Data-Using-ViewData-ViewBag-TempData-Sessi
https://www.c-sharpcorner.com/article/viewdata-viewbag-and-tempdata-in-asp-net-mvc/
https://medium.com/@andrezadossantosabrantes/viewbag-viewdata-and-tempdata-366951ce8798
'Language > ASP.NET' 카테고리의 다른 글
[ASP.NET MVC5] Controller POST, DELETE 요청 메서드 만들기 (0) | 2024.06.29 |
---|---|
ASP.NET와 ASP.NET Core의 차이점 (0) | 2023.06.11 |
ASP.NET Core의 폴더 구조 (0) | 2023.06.11 |
ASP.NET에 대해 (0) | 2023.06.11 |