国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

文本型單頁面ASP.NET計數器

2024-07-10 13:07:34
字體:
來源:轉載
供稿:網友
看到一個非常簡單的計數器,也許會很有用

前面我介紹了system.io空間下的文件操作對象,這里我講解一下如何制作應用于特定頁面的計數器。每個計數器都需要一個相應的文件來存儲當前的訪問量,那么如何建立用來技術的文件、如何對技術文件進行讀寫以及如何顯示當前訪問量是我們需要解決的問題。

首先 獲取技術文件

因為是單頁面計數器,并不應用于特定頁面,所以必須能根據當前頁面的不同而獲取或者生成不同的技術文件。最好把技術文件和頁面起相同的名字起不同的擴展名。

我們把獲取計數器文件部分的代碼包裝成一個函數:
function mike_getfilename() as string
dim mike_path as string
dim mike_position as integer
mike_path=request.servervariables("path_translated")
mike_position=instrrev(mike_path,".")
mike_getfilename=mid(mike_path,1,mike_position) & "count"
end function


使用request對象的servervariables("path_translated")方法來獲取當前頁面的絕對路徑。
instrrev函數返回某字符串在另一個字符串中出現的從結尾計起的位置
mid函數用于從字符串中返回指定數目的字符 mid(string, start[, length])
參數
string:字符串表達式,從中返回字符。如果 string 包含 null,則返回 null。
start:string 中被提取的字符部分的開始位置。如果 start 超過了 string 中字符的數目,mid 將返回零長度字符串 ("")。
length:要返回的字符數。如果省略或 length 超過文本的字符數(包括 start 處的字符),將返回字符串中從 start 到字符串結束的所有字符

使用mid(mike_path,1,mike_position)將當前頁面的文件名和.一起截取下來,然后把我們定義的擴展名連到串上,就得到了我們需要的計數文件名。



然后 讀取計數文件

下面我們要進行的操作是對計數文件進行讀寫操作,首先我們使用先前定義的mike_getfilename()函數得到當前文件名:
dim mike_pathname as string
mike_pathname=mike_getfilename()


實例化一個對該文件的讀取通道,即創建一個filestream對象:
mike_stream=new filestream(mike_pathname,filemode.openorcreate,fileaccess.read)


防止出現異常即該頁面第一次被訪問,計數文件使用openorcreate創建。
下面使用streamreader對象對文件進行讀取操作:
mike_readobj=new streamreader(mike_stream)
mike_str=mike_readobj.readline()
mike_readobj.close()

這里我們應用到了前面介紹過的streamreader對象的構造函數生成streamreader對象,然后使用readline()方法來讀取文件內容,需要特別注意的是
mike_readobj.close()
這個語句很重要,否則當前計數文件就一直被streamreader對象獨占,下面對文件進行寫操作時就會失敗,所以必須使用close()方法釋放被streamreader對象占用的文件和系統資源。

其次 顯示當前訪問量

當前訪問量可以采用response.write()方法來顯示,這種方法的缺點是不能調整計數器的顯示位置。這里我們利用asp.net中的服務器控件label,在業務邏輯代碼區設置該控件的text屬性。這樣就體現出業務邏輯和頁面邏輯代碼分離的優勢,不過畢竟還是在一個文件中,我個人推薦用代碼后置即前臺頁面放在aspx文件,后臺文件保存成一個類文件。

count=cint(mike_str)
count+=1
mikecat.text=count


我們通過streamreader讀取出來的計數文件轉換為數值,然后計數值加1,再在label控件顯示出來。此時的mikecat就是label控件。

最后 寫入計數器文件

進行寫入操作之前仍需要建立一個寫入通道:
mike_stream=new filestream(mike_pathname,filemode.open,fileaccess.write)
由于此時計數文件已經存在因此我們僅用到了filemode.open
我們使用streamwriter對象的構造函數來生成一個streamwriter對象來進行文件寫操作:
mike_writerobj=new streamwriter(mike_stream)
mike_writerobj.writeline(count)
mike_writerobj.close()




下面給出全部計數器代碼,大家可以了解一下其中細節

<%@ page language="vb" debug="true" explicit="true"%>
<%@ import namespace="system.io" %>

<html>
<head>
<title> new asp.net document </title>
</head>
<body bgcolor="#ffffff" topmargin="0" marginheight="0">

<script runat="server" language="vb">

sub page_load(source as object, e as eventargs)
if not page.ispostback then
dim count as integer
dim mike_stream as filestream
dim mike_pathname,mike_str as string
dim mike_readobj as streamreader
dim mike_writerobj as streamwriter
mike_pathname=mike_getfilename()
mike_stream=new filestream(mike_pathname,filemode.openorcreate,fileaccess.read)
mike_readobj=new streamreader(mike_stream)
mike_str=mike_readobj.readline()
mike_readobj.close()
count=cint(mike_str)
count+=1
mikecat.text=count
mike_stream=new filestream(mike_pathname,filemode.open,fileaccess.write)
mike_writerobj=new streamwriter(mike_stream)
mike_writerobj.writeline(count)
mike_writerobj.close()
end if
end sub

function mike_getfilename() as string
dim mike_path as string
dim mike_position as integer
mike_path=request.servervariables("path_translated")
mike_position=instrrev(mike_path,".")
mike_getfilename=mid(mike_path,1,mike_position) & "count"
end function

</script>

<form runat="server" method="">
<asp:label id="mikecat" runat="server"/>
</form>

</body>
</html>

=======================================

我們這里稍加修改即成為漂亮的圖形計數器,兩種計數器在文件讀寫方面完全一致。

在asp.net中用于裝載圖片的控件是image控件,因此下面就采用動態生成image控件的方法來實現動態生成圖形。這個容器我們采用<div id="mike_div" runat="server"/>

這里我們需要準備10張圖,分別是0~9十個數字的圖片(取名0~9.gif),我們采用下面的方法動態生成圖像:

dim mike_img as image
dim mike_graph as string
dim i as integer
count=cint(mike_str)+1
for i=1 to len(count)
mike_img=new image()
mike_graph=mid(count,i,1)
mike_img.imageurl=mike_graph & ".gif"
mike_div.controls.add(mike_img)
next



首先我們根據當前的計數字符串的長度來決定需要生成的圖形的長度。 new 指令來動態生成image控件,然后用imageurl屬性指定要顯示的圖片路徑。最后使用mike_div的add方法將當前生成的image控件加入到容器的控件集合中。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扶沟县| 北票市| 金沙县| 东兰县| 珲春市| 霍邱县| 当涂县| 宣汉县| 揭阳市| 龙江县| 正安县| 牟定县| 乌恰县| 毕节市| 梧州市| 娄底市| 安塞县| 西乌珠穆沁旗| 县级市| 桐庐县| 行唐县| 兴国县| 天水市| 江安县| 仪陇县| 文昌市| 阳高县| 阳山县| 东丽区| 桐城市| 禹城市| 蒙自县| 兴城市| 凉山| 长宁区| 德化县| 赫章县| 朝阳区| 政和县| 平罗县| 肥城市|