知识大全 关于使用basepage进行验证的问题

Posted

篇首语:马看牙板,人看言行。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于使用basepage进行验证的问题相关的知识,希望对你有一定的参考价值。

  在 (fx )中 采用了和 (fx )不同的编译模型 在fx 中 Page_Load事件的挂接是写在CodeBehind的代码中的 到了fx 采用了partial关键字后 估计是编译器自动产生了代码 再和codefile中的代码合并

  fx 的编译模式在大多数情况下效果不错 代码文件也变得更简洁了 但一旦使用页面继承时 问题就出来了

  在fx 中 可以写如下代码

  public class BasePage:Page

  

  override protected void OnInit(EventArgs e)

  

  InitializeComponent();

  base OnInit(e);

  

  private void InitializeComponent()

  

  this Load += new System EventHandler(this My_Page_Load);

  

  protected void My_Page_Load(object sender EventArgs e)

  

  // do somthing public

  PageLoadEvent(sender e);

  

  protected virtual void PageLoadEvent(object sender EventArgs e)

  

  public class FooPage:BasePage

  

  protected void Page_Load(object sender EventArgs e)

  

  

  protected override void PageLoadEvent(object sender EventArgs e)

  

  // do something here

  

  

  在fx 中 这么写没什么问题 FooPage中的Page_Load不会被执行 一切都很正常

  但在fx 中 首先 我不能自己挂接Page_Load事件了 因为编译器接管这事了 如果想实现fx 中的类似功能 只能这么写了

  public class BasePage:Page

  

  protected void Page_Load(object sender EventArgs e)

  

  // do somthing public

  PageLoadEvent(sender e);

  

  protected virtual void PageLoadEvent(object sender EventArgs e)

  

  public class FooPage:BasePage

  

  protected void Page_Load(object sender EventArgs e)

  

  

  protected override void PageLoadEvent(object sender EventArgs e)

  

  // do something here

  

  

  在 的代码中 必须写Page_Load 这样才会被编译器自动挂接 没法自定义了 这倒不是什么问题 只需遵守 的规矩好了 但在FooPage中就出问题了 在FooPage中一旦写了Page_Load 就会覆蓋BasePage中的Page_Load 而编译器只会发出warning 说FooPage中的Page_Load隐藏了BasePage中的Page_Load 这样的继承是很危险的 子类的设计者很可能在不经意间覆蓋了父类的逻辑 在这个例子中 一旦FooPage中定义了Page_Load 那么在PageLoadEvent就不会被执行了(假设FooPage的设计者并不是BasePage的设计者)

  有可能在 中有选项 使得与 完全兼容 但我试了一下 发现不管怎么改 只要在代码中有Page_Load 编译器铁定会挂接Page_Load事件

  解决方法

  在其他的方法中进行验证

  virtual protected void PageLoadEvent( object sender System EventArgs e )

  

  

  protected override void OnPreInit( EventArgs e )

  

  ValidateSession();

  base OnPreInit( e );

  

  /// <summary>

  /// 验证用户信息

  /// </summary>

  public void ValidateSession()

  

  //如果后台管理界面超时

  if (HttpContext Current Session[ UserId ] == null || string IsNullOrEmpty(HttpContext Current Session[ UserId ] ToString()))

  

  Response Write( <script>alert( 登录状态过期 请重新登录 );top window location= /admin/login aspx ;</script> );

  HttpContext Current Response End();

  return;

  //Response Redirect( ~/admin/login aspx true);

  

cha138/Article/program/net/201311/11373

相关参考

关于成本、费用的白条列支的问题

请1、从私人手中购买的沙、土、石料等建筑材料,收到了对方打的白条,列支了工程成本中;购买的柴油,取得了对方开具的发票(经税务机关验证,为假发票),列支了期间费用;支付的拆迁补偿费、安置费,收到对方白条

知识大全 关于“验证码的制作”的一些补充

   上次写了点关于验证码制作的代码算是学习了Drawing中的一些东西心里很快活也乐意为大伙儿做些善事于是便萌发了把验证码封装成简单的控件发布出去的念头起初是用ashx

知识大全 验证码为什么老显示出“看不清,换张图”求大神帮助

验证码为什么老显示出“看不清,换张图”求大神帮助那是在提醒你,看不清楚的话,点它再换一张图看。验证码为什么出错求大神帮助这是关于很多的问题;可能是你长时间没有输入验证码,导致验证码失效;可能是你的电脑

知识大全 js 验证电话号码手机号码正则表达式

  下面提供的几款关于js验证电话号码手机号码正则表达式是我从网上收藏了不过都是精品专业针对手机号与电话号码进行验证的  functioncheckPhone(phone)    //验证电话号码手机

知识大全 关于 mysql5 改密码后不能登录问题的解答

  首先说明一下下面描述仅限于Win系统其它系统我没试过Mysql自从以后修改了用户密码的格式从位增加到了位采用了一种新的验证方法但以前的客户端协议不支持这种方法所以造成了不能登临的后果即使密码正确了

知识大全 为什么我在百度贴吧发不了帖子呢

为什么我在百度贴吧发不了帖子呢我转百度见的~关于我的那个百度贴吧发贴机这几天老是有朋友问到相同或类似的问题,现在把常见问题整理一下:问题目录:问题1:为什么每贴都要输入验证码,怎样才能不输入验证码?问

知识大全 通过创设问题情境使学生提出假设,然后验证假设作出结论,这一教学策略是( )

通过创设问题情境使学生提出假设,然后验证假设作出结论,这一教学策略是()A通过创设问题情境使学生提出假设,这需要发现,然后验证假设作出结论,这就是学习。通过创设问题情境使学生提出假设,然后验证假设并做

知识大全 ASP登陆验证页应做的安全问题

ASP登陆验证页应做的安全问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  应对ASP溢出漏洞

知识大全 mysql 4.1采用了新验证方法后的认证问题

  mysql以后采用了新的验证方法所以导致一些程序不能正常使用我们可以使用old_password()函数使mysql继续使用旧的验证方式  比如我们建立一个admin的用户拥有全部权限密码gran

知识大全 asp 生成图片验证码

  下面一款代码是一个用asp生成图片验证码的程序哦关于验证代码写程序的大多都会知道哦下面来看看这款图片验证码的生成方式吧cha138/Article/program/net/201311/