小白学技术总是在黑暗中摸索前行,不断的碰壁,有时候只是个很小的问题,却能困扰你一个下午,甚至几天。这次碰到的Session问题就是如此。先看错误详情!
经测试发现,问题在于页面的生命周期,在Session机制未加载之前尝试了读取,所以提示找不着对像。在aspx后面的Page事件之前初始化了一个公共类,而此类的构造时定义了一个对像并尝试读取Session中的某个键。这才是错误的根源。代码如下:
【aspx页面】
namespace LGCMS.Web.Manage.Classify
{
public partial class ClassEdit : System.Web.UI.Page
{
protected int subCount = 0;
protected Model.ClassIfy thisClass;
protected Model.ClassIfy parentClass;
protected List<Model.Templete> list_PcTpl;//PC模版
protected List<Model.Templete> list_WapTpl;//手机模版
protected BLL.Templete templete = new BLL.Templete();
protected List<Model.ClassIfy> list_Class;//所有分类列表
BLL.Classify bll= new BLL.Classify();/////////////////【此行错误】
protected override void OnPreInit(EventArgs e)
{
BLL.Admins.CheckLogin(false);
// bll=
BLL.Site.RemberCurrentPageUrl(Request.Url.LocalPath);
base.OnPreInit(e);
}
【公共类】
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;
namespace LGCMS.BLL
{
public class Classify
{
DAL.Classify dal = new DAL.Classify();
List<Model.ClassIfy> sortList = new List<Model.ClassIfy>();
Model.Admins admin = HttpContext.Current.Session["LoginAdmin"] as Model.Admins;///【此行错误】
#region【1】添加分类
public string AddClass(Model.ClassIfy c)
{
int newId = dal.AddClassify(c);
总结:学好.net 首先要了解页面的生命周期,切记!切记!