css&javasrcipt 計數器及上次瀏覽時間(cookie;、literal)
本次練習基本用法,主要是展示
asp.net的literal元件,使用該元件達到用程式
後端,使前端asp網頁元件變身成html標籤
使文字型態的來客人數,轉成圖片顯示
網頁原始碼:
程式碼:
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 = "
";
}


留言
張貼留言