日期:2014-05-16  浏览次数:20662 次

求助,关于Session保存用户信息的问题
比如我定义了一个AccountModel

public class AccountModel
    {
        public string Guid { get; set; }
        public UserType UserType { get; set; }
        public string UserName { get; set; }
    }

然后在LoginHandler中进行引用,并创建了对象

AccountModel am = new AccountModel();

然后将登陆成功的用户的对应信息存入了am中,断点调试显示am没有问题,数据也都保存好了的

接着就是问题了,我想把am保存进Session中

由于之前都是只用了单一的变量对Session赋值,
如Session["Name"] = UserName;

于是我也一样地写
Session["Account"] = am;

于是就报错了,说未将对象引用设置到对象的实例

请问是不是把一个对象赋给Session和把一个变量赋给Session的方法不一样啊,求高手传授解决方法,感激不尽

------解决方案--------------------
亲 您要把对象系列化。增加[Serializable]为这个类。
------解决方案--------------------
我就觉得没问题。我实验了下 没问题。不知道你是怎么写的 能贴出代码么?

public partial class SessionTestaspx : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        AccountModel am = new AccountModel();
        am.Guid = "click";
        Session["Account"] = am;
    }

    public void btn_click(object sender, EventArgs e) 
    {
        btn.Text =((AccountModel)Session["Account"]).Guid.ToString();
    }

    public class AccountModel
    {
        public string Guid { get; set; }
        public UserType UserType { get; set; }
        public string UserName { get; set; }
    }
}

然后运行正常 按钮如下:

点击后改变值