asp.net 关于aspx前后台文件的五大问题
Q1:前台类如何访问后台类的成员?
A1:<%xxx%>,在前台类中加上<%xxx%>就可访问,其中xxx表示后台类的成员。当然前台类并非可以访问所有后台类成员,私有类成员就不能访问了,即是所有非私有类成员均可访问,例如 protected 类,pubic 类 成员。至于原因就是问题3的答案了。。。
Q2:后台类如何调用前台控制?
A2:必须在前台类控件中添加 runat=“server” ,英文直译过来很容易明白了,这样在后台类中就可以直接使用 this.xxx 来调用了。
Q3:前台类和后台类的关系?
A3:继承关系,从 Q1 中我们可以猜出个大概来,无论是从反编译,还是在前台类的 Page 实例中的 Inherit ,均可证明前台类继承于后台类。
Q4:浏览器请求页面时,服务器通过反射创建了响应页面的对象来处理,这个类名是什么?又是调用这对象的什么方法来处理请求的?
A4:这个类就是前台类啦,由于前台类继承于后台类,所以创建前台类的时候,必然会自动创建后台类。以我的理解,通俗点说就是既然儿子存在了,那么他老爸就必须先存在,对吧?
-------------------------------------------------分割小问题------------------------------------------------
现在用户通过浏览器向服务器发送请求过来,先是创建前台类对象(即页面类对象),然后是转成 IHttphandle 接口对象,在通过 HttpContext context 中的ProcessRequest() 方法来处理。至于为什么要转成 IHttphandle 接口对象呢?原因很简单,因为服务器软件并不知道不同的页面类对象里面的方法,页面类对象必须通过 转为 IHttphandle 接口对象 才能被 上下文对象中的 ProcessRequest() 方法来处理。
Q5:【关键】服务器调用页面类对象的什么东西来生成返回html代码?
A5:控件树。页面类对象通过控件树的方法,封装了整个页面的HTML源代码和C#代码,要生成html 代码是,只需遍历整棵控件树,并且调用每个控件中的 ——redner 方法获得每个控件的html 代码,然后拼接成一个完整的页面代码,最后 Response 回给浏览器,有浏览器执行显示。
-------------------------------------------------------------------------------------------------------------------
资料来源:课程总结、笔记