ASP.NET内置对象之page

  在使用VISUAL STUDIO.NET 2005开发中,用C#作为脚本语言,需要用到一个很为重要的方法,也就是大家最为熟悉的对象。C#C++一样,是一种面向对象的语言,于是,我们需要谈谈面向对象。

   Web应用程序开发中,我们经常用到一些ASP.NET的内部对象,用于维护当前应用程序,每一个会话,当前的HTTP请求,请求Web窗体页面等等。ASP.NET的内置对象有Page,Response,Request,Server,Application,Session,Cookies等,他们都是封装在.NET Framework类中。在ASP.NET页面初始化的时候,能够自动的加载,所有无需大家的建立,可以直接使用。

  

   ASP.NET内置对象之一是Page,首先大体概括一下Page的属性和事件。它有IsPostBackIsValidRegisterClientScriptBlock等常用属性,有InitLoadUnload等常用的事件。

 

 

 

 

   首先说说Page_Init事件,它的标准实行是protected void Page_Init(object sender, EventArgs e),用于对页面的初始化。在Web服务器端首先需要加载一个Page_Init。它和Page_Load不同,前者是初始化,后者是在初始化的基础上进行加载。比如当用户在浏览器页面触发了某个事件以后,客户端将窗口数据传回到服务器,服务器需要重新加载,然后再将数据返回到客户端,于是客户端也再次加载,但是这一次加载的时候就不会再加载Page_Init对象了,而是直接运行Page_Load事件。

  Page_InitPage_Load的区别可以通过一下代码和例子说明:

 

  这是Page_Init 的代码

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

 

}

protected void Page_Init(object sender, EventArgs e)

{

list1.Items.Add("青白江");

list1.Items.Add("云南");

}

protected void Button1_Click(object sender, EventArgs e)

{

list1.Items.Add(TextBox1.Text);

}

}

下面是Page_Load的代码

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

list1.Items.Add("青白江");

list1.Items.Add("云南");

}

 

protected void Button1_Click(object sender, EventArgs e)

{

list1.Items.Add(TextBox1.Text);

}

}

   他们的不同之处在于: Page_Init事件中,第一次客户端请求的时候,得到一个地址,然后点击增加地址后,也就是向服务器端返回一个数据,再得到一个数据,此时应该是调用Page_Load了,得到是正常的结果。但是如果没有Page_Init事件,那么向服务端返回数据后再得到数据,也就是加载了两次Page_Load事件,得到的结果是重复的。

  Page_Load事件是最常用的事件,每次都需要加载的,可以在事件里面实现很多对象的使用,属性的使用,它非常的重要。

 

 

 

 

   后是Page_Unload事件,因为这个事件我使用的很少,所有没有可以总结的和经验之谈。那么就说说几个属性吧。

   IsPostBack按照一本参考书的说法是用来获取一个布尔值,如果是TRUE,表示当前页为了响应客户端回发(例如单击按钮)而加载的,否则表示当前页面是首次加载和访问。我还是一个例子来实现比较容易说明白。

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (IsPostBack == false)

        {

            Label1.Text = "这是页面首次加载和访问得到的结果!";

        }

 

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        if (IsPostBack == true)

            Label2.Text = "这是触发了BUTTON按钮后的结果!";

    }

}

然后将false  true互相换一下位子 更能够说明问题。

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (IsPostBack == true)

        {

            Label1.Text = "这是页面首次加载和访问得到的结果!";

        }

 

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        if (IsPostBack == false)

            Label2.Text = "这是触发了BUTTON按钮后的结果!";

    }

}

于是就没有了两行文字说明了。当点击BUTTON按钮,再次加载的时候,又出现下一个结果:

说明已经不是首次加载了,然后可以进行一些操作。

 

 

 

 

 

 还有就是IsValid属性,用书上的话就是获取一个布尔值,用来只是页面验证是否成功,如果成功,就为TRUE,一般在含有验证服务器控件中使用,只有当所有的服务器控件都验证成功后,它的值才为TRUE。注意这个属性最好与验证服务器控件一起使用,也就是说大多数用在登陆框或者验证中

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

 

}

protected void Button1_Click(object sender, EventArgs e)

{

if (Page.IsValid == true)

{

Label1.Text = "提交正确,谢谢你的参与!";

}

else

{

Label1.Text = "对不起,请重新提交!";

}

}

}

 

当提交正确后成:

 

 

还有一个是RegisterClientScriptBlock属性,用来在页面中发出客户端脚本块。

详细的说明和解释请大家参考MSDN文档。

 

   最后想说的一点是这个Page对象虽然简单,但是要深刻理解还是不容易的,要弄清楚服务端和客户端的功能,传送方式等。这关系到一个学习方法的问题,也就是说该怎么学习,其实可以通过上面的代码和例子看出来,如果你搞不清某些定义,最好的方法是采用对比方法,用相反的一面去理解,这样可以帮助你学习!

 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值