zoukankan      html  css  js  c++  java
  • 重写page的OnInit(学习中总结的)

    在写b/s框架的系统的时候,我们会发现,我们经常会在不同的网页中验证Session是否存在,,而我这里没有用Session,用的是MemCache技术,其实它就是键值对。

    只不过将Memcache中的键,当Cookies中的值存储,然后,验证的时候,返回一步一步获取Memcache中的值。

    为了不用每次判断Cookies["sessionid"]是否存在,我们可以把复用代码写在system.Web.UI.Page中的OnInit中,

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Common
    {
       public class CheckSessionInfo:System.Web.UI.Page
        {
           public BookShop.Model.User LoginUser { get; set; }
           protected override void OnInit(EventArgs e)
           {
               if (Request.Cookies["sessionId"] != null)//判断存储自己定义的sessionId的值是否为空
               {
                   string sessionId = Request.Cookies["sessionId"].Value;
                   //从缓存中取出对应的值.
                  object obj= Common.MemcacheHelper.Get(sessionId);
                  if (obj != null)
                  {
                      LoginUser = obj as BookShop.Model.User;//获取登录用户信息
                      //重新赋值.(滑动过期时间)
                     // Common.MemcacheHelper.Set(sessionId, obj, DateTime.Now.AddMinutes(20));
                  }
                  else
                  {
                      Common.WebCommon.GoPage();
                  }
    
               }
               else
               {
                   Common.WebCommon.GoPage();
               }
               base.OnInit(e);
           }
        }
    }


    当你在创建其他类时,只要继承CheckUserInfo类。不过,希望你看了之后,重视OnInit();

    http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.100).aspx 这个网址说的是

    ASP.NET 页生命周期概述

     大家可以从msdn了解,Oninit方法再页面生命周期中的执行顺序。

  • 相关阅读:
    SDK manager打不开解决办法(转载)
    debian安装中文字体
    rtos之定时器实现
    rtos学习之支持多优先级
    RT-Thread 的空闲线程和阻塞延时
    RT-Thread之对象容器
    RT-Thread 之临界段保护
    RT-Thread之线程实现就绪列表
    rtos 学习之链表
    RTOS 的学习之创建线程
  • 原文地址:https://www.cnblogs.com/zychengzhiit1/p/3731178.html
Copyright © 2011-2022 走看看