2014-01-29 40 views
0

我在會話中保存了一些值,如下所示。如何打印C#會話對象的值

List<MyEntity> MyVariable = <some values here>; 
System.Web.HttpContext.Current.Session["MySession"] = MyVariable; 

當我嘗試打印MySession的變量在即時窗口,然後它會顯示如下:

Count = 2 
    [0]: {MyProject.Model.MyEntity} 
    [1]: {MyProject.Model.MyEntity} 

如何打印這是這些指標在0和1內的值?我試過以下,但沒有奏效,因爲它顯示錯誤「無法適用與[]的索引類型爲‘對象’的表情」:

System.Web.HttpContext.Current.Session["MySession"][0]; 

回答

2

你有你的價值轉換爲你指定的類型,和運用該指標:

((List<MyEntity>)System.Web.HttpContext.Current.Session["MySession"])[0]; 

會話只能容納泛型類型Object所有值,您在每次訪問時間,將它們轉換成正確的類型。爲了避免在多個位置投射,您可以圍繞Session創建一個包裝類,如this answer所示。

+0

我們在同一時間發佈了相同的答案! :) –

+0

哈哈是的。你們兩個都是絕對正確的,但Pierre-Luc Pineault在你面前9秒發佈了它,所以我將不得不接受他的回答。 –

2

你要投的會話對象列表,這裏有一個例子:

((List<MyEntity>)System.Web.HttpContext.Current.Session["MySession"])[0] 
1

你可以試試這個代碼:

using System.Web; 

List<MyEntity> list = (List<MyEntity>)HttpContext.Current.Session["MySession"]; 

if (list != null) 
{ 
    foreach (MyEntity item in list) 
    { 
     Response.Write(item.ToString()); // <-- you may want to override ToString to display the content 
    } 
} 

您需要會話對象,前您可以將其作爲列表進行訪問,因爲您可以在會話中存儲所有種類的object,默認情況下object沒有索引器。從那裏出錯信息。

之後,你仍然需要實現一種方式來顯示項目的內容。您可以覆蓋您的MyEntity類的ToString方法來執行此操作。