page_load 与page_init 的区别

page_load 与page_init 的区别

默认新建一个页面,就会有一个Page_Load事件的默认代码,而Page_Init却是另一个对页面作用非常重要的事件。
下面分别说明:
Page_Init:是在页面未加载之前,也就是在页面初始化之前,在Page_Load之前调用的,可以在控件加载之前做一些客户端检测呀这些操作等。但这个事件对于当前用户来说,只会进行一次,也就是第一次访问这个页面的时候,其运行一次。
Page_Load:在Page_Init之后运行(废话),用于加载控制以及页面的其它内容。客户端每刷新或是提交一次,Page_Load事件就重新绘制页面,将当前页面当新页面来处理。

区别说清楚了,再来说一下这点区别的利用。
我想到的是,可以利用这一点来做页面点击或是访问次数的更加精确一点的计数。
比如说,在Page_Init里运行计数的代码,这样这个页面被同一个用户不停的刷或是操作的时候,其点击始终是1次,这样计数就比较科学一些。当然,不能防止去了别的页面再回来的情况了。
还有比如我以前网站的访问统计,记录IP访问以及网站总的页面访问次数,都可以利用。

这里只是一个小小的想法,具体实现请自己DIY。。

 

 

例子:
以下代码共二个文件,保存之后,运行即可

文件名(1):calendar.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 control_calendar : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)  //如果此处为page_load,那么,先运行一下,点击下拉的年,月,日,然后点击“提交”按钮后,再来选择下拉的年月日的时候,注意观察,会发现出现的重复的下拉数据;但是用Page_init就不会有此现象发生!   

  {
        for (int y = 1980; y < 2050; y++)
        {
            ye.Items.Add(y.ToString());
        }
        for (int m = 1; m < 13; m++)
        {
            mo.Items.Add(m.ToString());
        }
        for (int d = 1; d < 31; d++)
        {
            da.Items.Add(d.ToString());
        }
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch (DropDownList1.SelectedValue)
        {
            case "None":
                Calendar1.SelectionMode = CalendarSelectionMode.None;
                break;
            case "Day":
                Calendar1.SelectionMode = CalendarSelectionMode.Day;
                break;
            case "DayWeek":
                Calendar1.SelectionMode = CalendarSelectionMode.DayWeek;
                break;
            case "DayWeekMonth":
                Calendar1.SelectionMode = CalendarSelectionMode.DayWeekMonth;
                break;

        }
    }
    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        Label1.Text = Calendar1.SelectedDate.ToShortDateString();
        Label2.Text = Calendar1.SelectedDate.Day.ToString()+"号";
        Label3.Text = Calendar1.SelectedDate.Month.ToString() + "月";
        Label4.Text = Calendar1.SelectedDate.Year.ToString() + "年";

    }
}

 

文件名(2).calendar.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="calendar.aspx.cs" Inherits="control_calendar" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
            <asp:ListItem Value="None">不选择</asp:ListItem>
            <asp:ListItem Value="Day">天</asp:ListItem>
            <asp:ListItem Value="DayWeek">天、周</asp:ListItem>
            <asp:ListItem Value="DayWeekMonth">天、周、月</asp:ListItem>
        </asp:DropDownList>
        <asp:Calendar ID="Calendar1" runat="server" BackColor="#FFFFCC" BorderColor="#FFCC66"
            BorderWidth="1px" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt"
            ForeColor="#663399" Height="200px" SelectionMode="None" ShowGridLines="True" Width="220px" OnSelectionChanged="Calendar1_SelectionChanged">
            <SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" />
            <TodayDayStyle BackColor="#FFCC66" ForeColor="White" />
            <SelectorStyle BackColor="#FFCC66" />
            <OtherMonthDayStyle ForeColor="#CC9966" />
            <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
            <DayHeaderStyle BackColor="#FFCC66" Font-Bold="True" Height="1px" />
            <TitleStyle BackColor="#990000" Font-Bold="True" Font-Size="9pt" ForeColor="#FFFFCC" />
            <DayStyle BorderColor="PeachPuff" />
        </asp:Calendar>
        <br />
        当前选中的日期是:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
        当前选中的天是:<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
        当前选中的月是:<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label><br />
        当前选中的年是:
        <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label><br />
        <br />
        <asp:DropDownList ID="ye" runat="server">
        </asp:DropDownList>年<asp:DropDownList ID="mo" runat="server">
        </asp:DropDownList>月<asp:DropDownList ID="da" runat="server">
        </asp:DropDownList>日&nbsp;
        <asp:Button ID="Button1" runat="server" Text="设置" /></div>
    </form>
</body>
</html>

 

 

 

转载于:https://www.cnblogs.com/291099657/archive/2008/09/30/1302525.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值