Хранение и получение данных из сеанса

Как сохранить данные в сеансе и получить значения из сеанса в С#.net?

Ответ 1

Добавить данные в сеанс:

DataTable Tissues = new DataTable();

Tissues = dal.returnTissues("TestID", "TestValue");// returnTissues("","") sample     function for adding values


Session.Add("Tissues", Tissues);

Извлеките данные, относящиеся к сеансу:

DataTable Tissues = Session["Tissues"] as DataTable

или

DataTable Tissues = (DataTable)Session["Tissues"];

Ответ 2

это просто как примечание, но в целом то, что вы хотите сделать, это сохранить размер на сеансе и ViewState маленьким. Обычно я просто храню идентификаторы и небольшие количества пакетов в сеансе и ViewState.

например, если вы хотите передать большие куски данных с одной страницы на другую, вы можете сохранить идентификатор в строке запроса и использовать этот идентификатор для получения данных из базы данных или файла.

PS: но, как я уже сказал, это может быть совершенно не связано с вашим запросом:)

Ответ 3

Чтобы сохранить DataTable в сеансе:

DataTable dtTest = new DataTable();
Session["dtTest"] = dtTest; 

Получить DataTable из сеанса:

DataTable dt = (DataTable) Session["dtTest"];

Ответ 4

Вы можете сделать это так, но сохранение объекта DataSet в сеансе не очень эффективно. Если у вас есть веб-приложение с большим количеством пользователей, он будет очень быстро засорять память вашего сервера.

Если вам действительно нужно это сделать, я предлагаю удалить его из сеанса, как только вам не понадобится DataSet.

Ответ 5

Простое решение для очень распространенной проблемы

                 // DECLARATION
                HttpContext context = HttpContext.Current;
                DataTable dt_ShoppingBasket = context.Session["Shopping_Basket"] as DataTable;

                // TRY TO ADD rows with the info into the DataTable
                try
                {
                    // Add new Serial Code into DataTable dt_ShoppingBasket
                    dt_ShoppingBasket.Rows.Add(new_SerialCode.ToString());

                    // Assigns new DataTable to Session["Shopping_Basket"]
                    context.Session["Shopping_Basket"] = dt_ShoppingBasket;
                }
                catch (Exception)
                {
                    // IF FAIL (EMPTY OR DOESN'T EXIST) - 
                    // Create new Instance, 
                    DataTable dt_ShoppingBasket= new DataTable();

                    // Add column and Row with the info
                    dt_ShoppingBasket.Columns.Add("Serial");
                    dt_ShoppingBasket.Rows.Add(new_SerialCode.ToString());

                    // Assigns new DataTable to Session["Shopping_Basket"]
                    context.Session["Shopping_Basket"] = dt_PanierCommande;
                }



                // PRINT TESTS
                DataTable dt_To_Print = context.Session["Shopping_Basket"] as DataTable;

                foreach (DataRow row in dt_To_Print.Rows)
                {
                    foreach (var item in row.ItemArray)
                    {
                        Debug.WriteLine("DATATABLE IN SESSION: " + item);
                    }
                }