Session传值的限制
在做一个小网站,登录以后,把User放到Session里面,然后登录界面转到功能界面,从功能界面把User从Session里面取出来。
原来User的结构简单,没有发现什么问题,现在为了更加清晰,把User的数据结构放在User里面,另外定义了一个User_info的类,作为User的成员,例如:
Public string name_login;
Public string user_department;
Public cs_user_info user_info;
然后,在登录界面,把user_info实例化:
user_info=new cs_user_info();
user_info.load_user_info();
之后,把带着user_info的User放到Session里面,再到功能界面,取出来:
my_user=(User)Session["current_user"];
然后,调用user的user_info的属性:
string photo_url=my_user.user_info.photo;
这个时候,系统提示,没有将对象实例化。
现在的问题是:
明明在放到Session之前,已经把user_info实例化了,取出来后,怎么就没有实例化了呢?
是需要跟User一样,取出来之后还要做一次类型转化,还是说,Session中object成员中的类,无法储存,只能取出以后,重新做一次实例化?
请各位大侠指导!先谢谢啦!
[最优解释]
肯定是登陆界面跳转的时候保存sesson值,sesson可以保存类的实例,你调试一下看看是不是保存进seeson前没有实例化user_info就保存了。
[其他解释]
session适合传递一些简单的类型,如果你要传复杂的,可以使用viewstate
[其他解释]
[Serializable]
public class User
[其他解释]
以前也用过seesion做登陆,痛苦的掉失数据,后来一直用form表单验证,这也是微软推荐的方式
[其他解释]
你的Session是设置的什么模式?是InProc的还是 state server的?
[其他解释]
耽误大家时间啦……