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