当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

4.1Page对象

8/31/2020 9:19:23 PM 人评论

4.1Page对象

4.1 Page对象

严格来说,Page对象是一个页面级别的对象,该对象是由System.Web.UI命名空间中的Page类来实现的,作为公有属性被声明在System.Web.UI.Control类中,它被System.Web.UI.TemplateControl类继承。

4.1.1 Page对象的属性

每一个ASP.NET页面都会对应一个页面类,Page对象就是页面类的实例。因为,Page对象是由System.Web.UI命令空间中的Page类来实现,因此,Page类与扩展名为“.aspx”的文件相关联,这些文件在运行时被编译为Page对象,并缓存在服务器内存中。

Page对象提供多个属性,通常这些属性可以获取不同的内容,常用属性如表4-1所示。

表4-1 Page对象的常用属性

在表4-1中列出了Page对象的多个属性,下面简单介绍IsPostBack属性和IsValid属性。

1.IsPostBack属性

IsPostBack属性用来获取一个布尔值,如果返回值为true,则表示当前页是为响应客户端回发;如果返回值为false,则表示当前页是首次加载。

【范例1】

在Web窗体页中分别添加一个用户名输入框、一个密码框和一个提交按钮,代码如下。

    Name:<asp:TextBox ID="txtName" runat="server"></asp:TextBox><br /><br />
    Pass:<asp:TextBox ID="txtPass" TextMode="Password" runat="server">
    </asp:TextBox><br /><br />
    <asp:Button ID="Button1" runat="server" Text="Button" />

在Web窗体页后台Load事件中添加代码,通过Page.IsPostBack判断页面是否为首次加载,如果是则将用户名输入框的值显示为admin,否则显示“回发”,代码如下。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (! Page.IsPostBack) {                 //页面首次加载
          txtName.Text = "admin";
        } else {                                 //页面回发
          txtName.Text = "回发";
        }
    }

运行窗体页面查看效果,如图4-1所示为首次加载时的效果。直接单击Button按钮进行测试,如图4-2所示。

图4-1 页面首次加载

图4-2 页面回发加载

2.IsValid属性

IsValid属性用来获取一个布尔值,该值指示页验证是否成功。如果页验证成功,则为true;否则为false。一般在包含验证服务器控件的页面中使用,只有在所有验证服务器控件都验证成功时,IsValid属性的值才为true。

【范例2】

在范例1的基础上添加代码,实现步骤如下。

(1)为用户输入框和密码框添加RequiredFieldValidator验证控件,必须保证用户输入登录名和密码,代码如下。

    Name:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="rfvName" runat="server" ControlToValidate="txtName" ErrorMessage="必须填写"></asp:RequiredFieldValidator><br /><br />
    Pass:<asp:TextBox ID="txtPass" TextMode="Password" runat="server">
    </asp:TextBox>
    <asp:RequiredFieldValidator ID="rfvPass" runat="server" ControlToValidate="txtPass" ErrorMessage="必须填写"></asp:RequiredFieldValidator><br />
    <br />

(2)为窗体中的Button控件添加Click事件。页面代码如下。

    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

(3)在Button控件之后添加一个用于显示信息的Label控件。窗体代码如下。

    <asp:Label ID="lblResult" runat="server" ></asp:Label>

(4)在窗体页面后台添加Button控件的Click事件代码,通过Page.IsValid属性判断是否通过验证。内容如下。

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Page.IsValid) {          //如果输入的信息通过验证
          lblResult.Text = "通过验证";
        }
    }

(5)运行窗体页面查看效果,直接单击图中的Button按钮测试,如图4-3所示。在页面中输入用户名和密码后再次单击Button按钮,如图4-4所示。

图4-3 没有通过验证

图4-4 已经通过验证

4.1.2 Page对象的方法

Page对象最常用的就是属性,但是它也提供了一系列的方法和事件,最常用的方法有以下两个。

(1)DataBind()方法:将数据源绑定到被调用的服务器控件及其所有子控件。

(2)RegisterClientScriptBlock()方法:向页面发出客户端脚本块。

使用Page.RegisterClientScriptBlock()方法可以在页面中输出脚本,但是这种方式已经过时。实际上,Page对象支持ClientScript属性,该属性返回ClientScriptManager对象。调用ClientScriptManager对象提供的方法也可以输出脚本,如表4-2所示。

表4-2 ClientScriptManager对象的常用方法

RegisterClientScriptBlock()方法输出脚本信息时,可以将JavaScript函数放在页面的顶部。也就是说,该脚本用于在浏览器中启动页面。两个形式如下。

    void  ClientScriptManager.RegisterClientBlock(Type  type,  string  key,  string script)
    void  ClientScriptManager.RegisterClientBlock(Type  type,  string  key,  string script, bool addScriptTags)

其中,type表示要注册的客户端脚本的类型;key表示要注册的客户端脚本的键;script表示要注册的客户端脚本文本;addScriptTags表示是否添加脚本标记的布尔值。

【范例3】

更改范例2的代码,重新为Button控件的Click事件添加代码。在该事件代码中判断用户输入的用户名和密码是否都为admin,如果是则弹出“恭喜您,输入的用户名和密码正确!”对话框提示,否则弹出“很抱歉,用户名或者密码错误!”对话框提示。代码如下。

    if (txtName.Text == "admin" && txtPass.Text == "admin") {
        Page.ClientScript.RegisterClientScriptBlock(GetType(), "", "<script>
        alert(’恭喜您,输入的用户名和密码正确!')</script>");
    } else {
        Page.ClientScript.RegisterClientScriptBlock(GetType(), "", "<script>
        alert(’很抱歉,用户名或者密码错误!')</script>");
    }

运行窗体页面输入用户名和密码后单击按钮测试,如图4-5所示。

图4-5 RegisterClientScriptBlock()方法的使用

提示

除了RegisterClientBlock()方法外,RegisterStartupScript()方法也可以输出脚本。这两个方法的区别不大,最大的区别就是RegisterStartupScript()方法把脚本放在ASP.NET页面的底部,而不是顶部。实际上,RegisterStartupScript()方法与RegisterClientBlock()方法具有相同的构造函数,开发者在查找、调用页面控件时可用该方法。

4.1.3 Page对象的事件

Page对象包含一系列的事件,常用的三个事件说明如下。

(1)Init事件:当服务器控件初始化时发生。

(2)Load事件:当服务器控件加载到Page对象中时发生。

(3)Unload事件:当服务器控件从内存中卸载时发生。

上一篇:3.7其他控件

下一篇:4.2Response对象

相关教程

共有条评论 网友评论

验证码: 看不清楚?