我今天在公司做一個導師提交寄語的功能,說白了就是一個導師第一次進入是沒有寄語的,然後就添加修改寄語;當然這個就牽扯到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保存的值了。