我今天在公司做一个导师提交寄语的功能,说白了就是一个导师第一次进入是没有寄语的,然后就添加修改寄语;当然这个就牵扯到cs与前台的交互,我是通过Handler来实现的
因为要修改他的寄语所以就要根据他的ID进行修改,但是,一般公司的项目都是把用户登陆之后的资料保存在session里面;所以根据ID就要获取ID这个是毫无疑问的,我一开始总是
获取不到ID,也就是在cs文件里面获取不到我要的ID,我的获取方式是这样子:string uid = HttpContext.Current.Session[UserSessionPolicy.SESSION_USERID] as string;
说明一下这个”UserSessionPolicy.SESSION_USERID“,其中“UserSessionPolicy”是一个专门用来保存用户信息的类,当然也同时保存了用户ID也就是代码里的“SESSION_USERID”。在我点击提交按钮时回报一个这样的错”未将对象引用实例“,大家肯定会想就是没有实例化吗?是没错,就是没有实例化,但是在Handler里面如何实例化
Session呢,大家知道session是一个作用域,用来保存状态的,所以在Handler里面一定要引用一个命名空间进来,之前我遇到这个问题
好头痛,今天把他给解决了。今天就把心德写在这里,和大家一起分享,希望以后有网友遇到同样类似的问题提供一点小小的帮助。
我这这例子是导师寄语要用到ID,是不是其他要用到ID的都可以这样做呢?一般来说通过Handler来处理数据的那个类都要引用“using System.Web.SessionState;”这个命名
空间,然后那个类就继承“IReadOnlySessionState”。比如以下例子:
代码
<%@ WebHandler Language="C#" Class="TeacherInfoHandler" %>using System;using System.Web;using com.rrs.baby.business.Information;using com.rrs.core;using System.Web.Script.Serialization;using System.Web.SessionState;//用要到session保存的IDusing System.Collections;public class TeacherInfoHandler : IHttpHandler, IReadOnlySessionState{ //方法体}
在这个TeacherInfoHandler类里面就可以用session保存的值了。