迈克老猫(MikeCat)
来自:老猫の理想
前面我介绍了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
dim mike_pathname as string mike_pathname=mike_getfilename()
mike_stream=new filestream(mike_pathname,filemode.openorcreate,fileaccess.read)
count=cint(mike_str) count+=1 mikecat.text=count
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控件加入到容器的控件集合中。
好了,把这段代码加入上面的计数器代码中就成了图形计数器。呵呵。大家试试吧!~
本文地址:http://com.8s8s.com/it/it44900.htm