当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

关于使用basepage进行验证的问题

  在asp.net 2.0(fx2.0)中,采用了和asp.net 1.1(fx1.1)不同的编译模型。在fx1.1中,Page_Load事件的挂接是写在CodeBehind的代码中的,到了fx2.0,采用了partial关键字后,估计是编译器自动产生了代码,再和codefile中的代码合并。

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

  在fx1.1中,可以写如下代码

  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...

  }

  }

  在fx1.1中,这么写没什么问题,FooPage中的Page_Load不会被执行,一切都很正常。

  但在fx2.0中,首先,我不能自己挂接Page_Load事件了,因为编译器接管这事了。如果想实现fx1.1中的类似功能,只能这么写了:

  public class BasePage:Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  // do somthing public...

  PageLoadEvent(sender,e);

  }

相关内容
赞助商链接