ASP.NET深入浅出系列3- Page类

在.NET Framework中,Page类为ASP.NET应用程序从.aspx文件构建的所有对象提供基本行为。该类在namespace System.Web.UI命名空间中定义,从TemplateControl中派生出来,实现了IHttpHandler接口:
public class Page : TemplateControl, IHttpHandler
TemplateControl是向ASP.NET页面和用户控件提供基本功能的抽象类。Control类位于这个层次的顶端。它定义由所有的ASP.NET服务器端元素(页面,控件)共享的属性、方法和事件。结构图如下:

Page对象的重要属性
ClientQueryString:获取请求的 URL 的查询字符串部分。这个属性可以用于处理特殊格式的 URL查询字符串。
Visible:这是一个重写自Control类的属性,如果页面的Visible为false,ASP.NET不会为此页面生成任何HTML代码,这时只显示使用Response.write输出的文本。
IsValid:获取一个值,该值指示页验证是否成功。这个属性在使用验证控件时常用。
IsPostBack:获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。如果是为响应客户端回发而加载该页,则为 true;否则为 false。这个属性相当常用,我们常常是在第一次访问页面时进行某些初始化,回发时不进行某些初始化工作,这时候我们就要在page_load事件中使用这个属性判断是否是回发。
Request:获取请求的页的 System.Web.HttpRequest 对象。
Response:获取与该 System.Web.UI.Page 对象关联的 System.Web.HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。
Session:获取 ASP.NET 提供的当前 Session 对象。
Theme:获取或设置页主题的名称。
Title:获取或设置页的标题,如果需要动态更换浏览器页标题,这个属性很有用。
Controls: 获取 System.Web.UI.ControlCollection 对象,该对象表示 UI 层次结构中指定服务器控件的子控件。这是继承于Control类的属性。当我们需要访问页面中的控件时它很有用。

Page对象的重要方法
DataBind():将页面中所有的数据绑定控件绑定到数据源。
例如:
int[] a = { 1,2,3,4};
GridView1.DataSource = a;
GridView2.DataSource = a;
this.DataBind();
我们可以使用页面的DataBind()方法将两个GridView绑定到数据源。
FindControl():在页命名容器中搜索带指定标识符的服务器控件。这里要注意的是这个方法并不搜索自身是命名容器的子控件,如果需要搜索页面的所有控件,可以使用递归方法。
SetFocus(Control control):将浏览器焦点设置为指定控件。这是一个非常有用的方法,比方说我们希望页面载入后,焦点在TextBox1对话框上,我们可以在page_load事件中输入如下代码:
this.SetFocus(TextBox1);

Page对象的重要事件
请参见http://www.cnblogs.com/nuaalfm/archive/2008/09/11/1289325.html


我们都知道,所有的aspx的代码分离类都是继承于这个Page类的,但有的时候我们可能发现有一些页面的部分功能大量重复,我们可以将这些重复的部分抽象出来到一个类,让这个类继承于Page类,然后再让那些代码分离类继承于这个类,我们这里举一个实用的例子:

有时我们可能希望我们的页面支持在textbox中输入值后,单击回车后我们可以动态的指定调用哪一个按钮的方法。
页面基类为:

ContractedBlock.gif ExpandedBlockStart.gif Code
namespace Sample
{
    
public class Page : System.Web.UI.Page
    {
        
public Page()
        {

        }         
// Internals  
        public  void TieButton(Control TextBoxToTie, Control ButtonToTie)
        {
            
// Init jscript
            string jsString = "";

            
// Check button type and get required jscript
            if (ButtonToTie is LinkButton)
            {
                jsString 
= "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {"
                    
+ this.ClientScript.GetPostBackEventReference(ButtonToTie, "").Replace(":""$"+ ";return false;} else return true;";
            }
            
else if (ButtonToTie is ImageButton)
            {
                jsString 
= "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {"
                    
+ this.ClientScript.GetPostBackEventReference(ButtonToTie, "").Replace(":""$"+ ";return false;} else return true;";
            }
            
else
            {
                jsString 
= "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {document."
                    
+ "forms[0].elements['" + ButtonToTie.UniqueID.Replace(":""_"+ "'].click();return false;} else return true; ";
            }

            
// Attach jscript to the onkeydown attribute - we have to cater for HtmlControl or WebControl
            if (TextBoxToTie is HtmlControl)
            {
                ((HtmlControl)TextBoxToTie).Attributes.Add(
"onkeydown", jsString);
            }
            
else if (TextBoxToTie is WebControl)
            {
                ((WebControl)TextBoxToTie).Attributes.Add(
"onkeydown", jsString);
            }
        }
    }
}

 

页面类为:

ContractedBlock.gif ExpandedBlockStart.gif Code
public partial class _Default : Sample.Page
{

    
protected void Page_Load(object sender, EventArgs e)
    {
        
this.TieButton(TextBox1, Button2);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值