namespace LearnASPNETCoreMVC5.Models
{
public class Product
{
public string Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
}
Helpers 라는 폴더를 생성하고 SessionHelper.cs 클래스를 만듭니다. 세션 값을 할당할때는 Newtonsoft.Json 을 활용하여 직렬화(SerializeObject)를 하며, 가져올 때는 DeserializeObject 를 하였습니다.
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
namespace LearnASPNETCoreMVC5.Helpers
{
public static class SessionHelper
{
public static void SetObjectAsJson(this ISession session, string key, object value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T GetObjectFromJson<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
}
}
}
문자열은 SetString(), 숫자는 SetInt32() 그리고 object 는 SessionHelper 클래스를 통해 할당하는 코드 예제 입니다.
using LearnASPNETCoreMVC5.Helpers;
using LearnASPNETCoreMVC5.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace LearnASPNETCoreMVC5.Controllers
{
[Route("demo")]
public class DemoController : Controller
{
[Route("")]
[Route("index")]
[Route("~/")]
public IActionResult Index()
{
HttpContext.Session.SetInt32("age", 20);
HttpContext.Session.SetString("username", "abc");
Product product = new Product
{
Id = "p01",
Name = "Name 1",
Price = 5
};
SessionHelper.SetObjectAsJson(HttpContext.Session, "product", product);
List<Product> products = new List<Product>() {
new Product {
Id = "p01",
Name = "Name 1",
Price = 5
},
new Product {
Id = "p02",
Name = "Name 2",
Price = 9
},
new Product {
Id = "p03",
Name = "Name 3",
Price = 2
}
};
SessionHelper.SetObjectAsJson(HttpContext.Session, "products", products);
return View("Index");
}
}
}
할당된 session 을 GetInt32(), GetString() 및 Helper Class 를 통한 object 를 view page 에서 session 가져와서 출력하는 부분을 확인해 보겠습니다.