易于使用的计数器

分享于 

5分钟阅读

Web开发

  繁體

Sample Image - EasyHit.jpg

介绍

我想为我的ASP.NET 应用程序创建一个命中计数器,但是我希望它非常容易部署。 我不想上传一组图像,设置数据库访问或者任何类似的。 我想要一些可以添加到 Visual Studio 工具箱中的东西,然后简单地拖放到我的页面上。

解决办法是什么呢

我设计了一个定制控件,它呈现一个 HTML table,每个单元格都是计数器的一个数字。 计数器的样式可以从 Visual Studio 设计器中完全配置。 图 上面 显示了计数器的一个例子。

命中次数存储在文本文件中,该文件将在第一次命中页时自动创建。 你可以选择在每次命中页面时增加存储的值,或者你可以选择一个延迟。

由于值存储在文本文件中,如果更新应用程序,则不会丢失页计数。 如果没有文本文件,并且只将计数器存储为应用程序变量,那么当你更新站点时,你将把计数器重置为0.

下面是该控件的最重要属性:

  • Visible

    确定是否在页面上显示计数器。 如果该值为 True ( 默认设置) 然后用户可以看到页面上的计数器。 如果该值设置为 False 然后计数器递增,但计数器不显示在页面上。

  • Padding

    显示的最小数字数,默认为 5,因此 3点击显示为 00003。

  • WriteDelay

    更新文本文件的时间间隔。 在 Visual Studio 设计器中,这是以 hh:mm:ss 格式。 如果指定零值(。默认值,换句话说,00: 00: 00 ),则每次访问页时都会更新文本文件。

  • TextFileName

    在服务器上存储命中计数的文件,relative 到应用程序 root。 如果要将这里文件放入子文件夹中,则可以执行这里操作( 比如。 bincount.txt 将把文件存储在应用程序bin文件夹中,而不是存储在 root 中。

所有其他属性只适用于应用颜色和格式,它们都应该以正常方式工作。

详细信息

呈现控件非常简单。 首先,我重写 WebControlTagKey 属性,以告诉它发送 表格 标记而不是默认值 span 标签。

接下来,我添加 table 属性,比如边框和间距,然后将开始标记发送到浏览器。 A foreach 循环将每个列添加到包含数字的table 中。 最后,发送结束标记,我们就完成了。

protectedoverridevoid Render(HtmlTextWriter output)
{ 
 Attributes.Add("cellSpacing","1");
 Attributes.Add("cellPadding","1");
 Attributes.Add("border","1");
 Attributes.Add("borderWidth",BorderWidth.ToString());
 Attributes.Add("borderColor",formatColour(BorderColor));
 base.RenderBeginTag(output);
 output.Write("<TR>");
 foreach (char c in mCount.ToString().PadLeft(mPadding,'0'))
 output.Write("<TD align="middle">"+c+"</TD>");
 output.Write("</TR>");
 base.RenderEndTag(output); 
}

已经重写的OnLoad 方法中的计数器递增。 这里代码首先检查 Context 是否为 如果控件不能在 Visual Studio IDE中显示,则说明该控件是否在。 我还在检查页面是否为 postback。 在任何情况下,计数器都不递增。 否则,点击计数器将增加一个。

如果要使用这里控件,请下载源代码并向 ASP.NET 应用程序中添加对 DSHHitCounter.dll的引用。 在工具箱中添加 HitCounter 控件后,可以简单地将控件拖放到设计器中的ASPX页上,并立即运行该控件。 这并不容易。

便笺

这里控件要求应用程序具有 FileIOPermissionAccess.WriteFileIOPermissionAccess.AppendFileIOPermissionAccess.Read 权限,才能对托管它的文件夹进行访问。


相关文章