css&javasrcipt 計數器及上次瀏覽時間(cookie;、literal)

本次練習基本用法,主要是展示
asp.net的literal元件,使用該元件達到用程式
後端,使前端asp網頁元件變身成html標籤
使文字型態的來客人數,轉成圖片顯示




網頁原始碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GG.aspx.cs" Inherits="MyAspWeb.GG" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>這是首頁</title>
    <style type="text/css">
        body { background-image:url(images/bg/b10.gif) }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <p><h3>這是ASP.NET的首頁</h3></p>
    <p>
        <h3>您是第 
            <asp:Literal ID="VisitedLiteral" runat="server"></asp:Literal> 光臨的客人
            <!--程式撰寫後會代換VisitedLiteral的值
                Literal的特性就是可以變身,只要在程式後端代入對應的
                html語法,就能將這個標籤變成其他東西,這邊會將來訪
                次數的文字,轉成圖片顯示
                -->
        </h3>
    </p>
    <p>
        <h3>您上次來的時間為:
            <asp:Literal ID="LastLiteral" runat="server"></asp:Literal>
            <!--這邊將該使用者上次來訪時間,重新顯示,用cookie記錄 -->     
        </h3>
    </p>
    <p>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
        <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
    </p>
    <p>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <!--label也可做到變身,但label元件佔系統資源較大 --> 
    </p>
    <p>
        <asp:Literal ID="Literal1" runat="server"></asp:Literal>
        <!--Literal,相對label佔的資源較小 --> 
    </p>
    </form>
</body>
</html>



程式碼:

protected void Page_Load(object sender, EventArgs e)
{
    //計數器-------------------------------------------------------------
    String path = Server.MapPath("App_data/VisitedCount.txt");
    //抓出系統的根目錄
    //後面App_data/VisitedCount.txt是存放次數的文件
    //其中App_data是ASP.NET預設資料夾之一
    //該資料夾特色是使用者不能直接存取檔案

    String VisitedCount = System.IO.File.ReadAllText(path);
    //將文件中所有文字讀出
            
    int temp = int.Parse(VisitedCount) + 1; //轉型後加1
    String number = temp.ToString();
    System.IO.File.WriteAllText(path, number);//寫回去該文件
            
    Literal1.Text = temp.ToString();
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < 8 - number.Length; i++)
    {//來訪人數設定為8位數,減掉number的長度補零的圖案
        sb.Append("");
    }
    for (int i = 0; i < number.Length; i++)
    {//逐一取出number數字,並找出對應的數字圖寫上      
        sb.Append(String.Format("",number.Substring(i,1)));
    }
    //將sb寫回VisitedLiteral.Text,使它變身成html語言
    //如此在讀取網頁會找出對應的圖顯示成瀏覽人數
    VisitedLiteral.Text = sb.ToString();


    //-------------------------------------------------------------------------
    //紀錄上次時間-------------------------------------------------------------
    if (Request.Cookies["lastTime"] != null)
        LastLiteral.Text = Request.Cookies["lastTime"].Value;
    else
        LastLiteral.Text = "您第一次光臨本站";
            
    HttpCookie cc = new HttpCookie("lastTime");
    cc.Value = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
    cc.Expires = DateTime.Now.AddMonths(3);//到期日為本日加3個月
    Response.Cookies.Add(cc);

}

//以下2個方法是展示Label跟Literal都可以變身------------------------------------
protected void Button1_Click(object sender, EventArgs e)
{
    //Label 與Literal的差別在literal可以變身
    //可以隨意輸入html語言進行轉換,本來label不行,後來改為可以
    //label比較適合對文字進行變化
    //literal比較適合用在後端cs想對前端的aspx進行變化時,放入html語法
    Label1.Text = "按鈕1被按了";
    Literal1.Text = "按鈕1被按了";
}

protected void Button2_Click(object sender, EventArgs e)
{
    Label1.Text = " ";
    Literal1.Text = " ";
}

留言

熱門文章