3

List<object>ASP.NET:セッションなどの複雑なオブジェクトを保持することは可能ですか? はいの場合、どうすればよいですか?セッションでリストを保持しようとしていますが、そのリストを文字列に変換できないと言われています。

編集

[Serializable]
public class Client
{
        public string ClientType { get; set; }
        public string ClientName { get; set; }
        public string SubClientName { get; set; }
        public string Project { get; set; }
        public string Service { get; set; }
        public string Activity { get; set; }
}
List<Client> ListOfClients;
protected void Page_Load(object sender, EventArgs e)
{
     if(!IsPostBack)
     {
        ListOfClients = new List<Client> { new Client()}; 
        Session["ListOfClients"] = ListOfClients;//This is where the error occurs
                                                 //Cannot convert List<Client> to string... 
     }  
}

実行する操作は多数ありますが、アイデアは、セッション内のクライアントのリストにあるものをすべて保持することです。

助けてくれてありがとう。

4

3 に答える 3

9

はい、シリアル化可能なオブジェクトをセッション変数に格納できます。例えば:

List<string> list;

Session["list"] = list;

次に、値を返すには:

List<string> list = (List<string>)Session["list"];
于 2012-08-14T14:59:15.903 に答える
6

セッション状態InProcモードである限り、セッションオブジェクトに何でも保存できます。

それ以外の場合、保存するものはシリアライズ可能でなければなりません。

保存するもののタイプはobjectであるため、返される参照をキャストすることに注意してください。

ListOfClients = Session["ListOfClients"] as List<Client>;
于 2012-08-14T15:10:29.143 に答える
0

実行時ではなくコンパイル時にエラーが発生するというコメントを書いたのでSessionPage.Session.

Visual Studio のセッション テキストの上にマウスを置いてみてください。ツールチップには、Session のタイプが示されているはずです。

System.Web.SessionState.HttpSessionState

他の何かが表示されている場合は、マークアップ (.aspx ファイル) とコード ビハインド ファイルの両方を検索して、名前/ID で何か他のものを宣言しているかどうかを確認し、その名前/IDSessionを変更する必要があります。

于 2012-08-15T12:31:55.053 に答える