zoukankan      html  css  js  c++  java
  • 用HttpModule控制或修改页面。


    最近无事写了一个HttpModule的抽象基类,从这个类继承的HttpModule就能直接对Page对象进行操作,只需要重写OnPrePageExecute方法,然后向该类提供的Page属性注册事件或者修改属性即可。

    使用HttpModule是比页面基类更好的方法,更加灵活方便。


     1  /// <summary>
     2  /// 控制aspx页面的HttpModule通用基类
     3  /// </summary>

     4  public abstract class PageModule : IHttpModule
     5  {
     6
     7    private HttpApplication _application;
     8
     9    /// <summary>
    10    /// 销毁PageModule实例。
    11    /// </summary>

    12    public void Dispose()
    13    {
    14    }

    15
    16    /// <summary>
    17    /// 实现IHttpModule,初始化PageModule
    18    /// </summary>
    19    /// <param name="context">HttpApplication实例</param>

    20    public void Init( HttpApplication context )
    21    {
    22      _application = context;
    23
    24      //_application.PostMapRequestHandler += new EventHandler( OnPostMapRequestHandler );
    25      _application.PreRequestHandlerExecute += new EventHandler( OnPreRequestHandlerExecute );
    26      _application.PostRequestHandlerExecute += new EventHandler( OnPostRequestHandlerExecute );
    27
    28    }

    29
    30
    31    
    32    private void OnPreRequestHandlerExecute( object sender, EventArgs e )
    33    {
    34      _page = Context.Handler as System.Web.UI.Page;
    35
    36      if ( _page != null )
    37        OnPrePageExecute( sender, e );
    38
    39    }

    40
    41    /// <summary>
    42    /// 当执行页面处理程序之前发生
    43    /// </summary>
    44    /// <param name="sender">事件源</param>
    45    /// <param name="e">事件参数</param>

    46    protected virtual void OnPrePageExecute( object sender, EventArgs e )
    47    
    48
    49    }

    50
    51    
    52    private void OnPostRequestHandlerExecute( object sender, EventArgs e )
    53    {
    54      if ( _page != null )
    55        OnPostPageExecute( sender, e );
    56    }

    57
    58    /// <summary>
    59    /// 当执行页面处理程序执行完毕时发生
    60    /// </summary>
    61    /// <param name="sender">事件源</param>
    62    /// <param name="e">事件参数</param>

    63    protected virtual void OnPostPageExecute( object sender, EventArgs e )
    64    {
    65
    66    }

    67
    68
    69
    70
    71    private System.Web.UI.Page _page;
    72
    73    /// <summary>
    74    /// 获取当前请求的页面对象
    75    /// </summary>

    76    protected System.Web.UI.Page Page
    77    {
    78      get return _page; }
    79    }

    80
    81    /// <summary>
    82    /// 获取当前的请求的Http上下文信息
    83    /// </summary>

    84    protected HttpContext Context
    85    {
    86      get return _application.Context; }
    87    }

    88
    89    /// <summary>
    90    /// 获取模块所在的HttpApplication实例
    91    /// </summary>

    92    protected HttpApplication ApplicationInstanse
    93    {
    94      get return _application; }
    95    }

    96
    97  }

    98
  • 相关阅读:
    idea 团队成员修改工程后push推送
    clone克隆远程库工程到本地
    idea本地工程项目push推送到远程库
    Android中使用ViewGroup.removeViews()时出现NullPointException解决方案
    Android项目的targetSDK>=23,在低于Android6.0的部分测试机(类似华为)上运行时出现的系统权限问题
    C#-Xamarin的Android项目开发(三)——发布、部署、打包
    defineProperty 和Proxy双向绑定演示,你还不知道么?
    2020想学习JAVA的同学看过来,最基础的编程CRUD你会了没?
    三面拿杭州研究院50offer:面对这些问题,你都能做到嘛??
    ROS 机器人技术
  • 原文地址:https://www.cnblogs.com/Ivony/p/412155.html
Copyright © 2011-2022 走看看