易于使用的点击计数器






4.54/5 (37投票s)
2004 年 1 月 21 日
3分钟阅读

320399

12567
一个*非常容易*使用的 ASP.NET 点击计数器控件。
引言
我想为我的 ASP.NET 应用程序创建一个点击计数器,但我希望它非常容易部署。 我不想上传一组图像,设置数据库访问或任何类似的东西。 我想要一些可以添加到 Visual Studio 工具箱中,然后简单地拖放到我的页面上的东西。
解决方案
我设计了一个自定义控件,它呈现一个 HTML 表格,每个单元格都是计数器的一个数字。 计数器的样式可以完全在 Visual Studio 设计器中配置。 上图显示了计数器运行的示例。
点击次数存储在一个文本文件中,该文件将在页面首次被点击时自动创建。 您可以选择每次页面被点击时递增该文件中存储的值,或者您可以选择延迟,在这种情况下,该文件只会按照您指定的时间间隔更新。
由于该值存储在文本文件中,如果您更新应用程序,页面计数不会丢失。 如果没有文本文件,并且我们仅将计数器存储为应用程序变量,那么当您更新站点时,您将把计数器重置为零。
以下是控件最重要的属性
Visible
确定是否在页面上显示计数器。 如果值为
True
(默认值),则用户可以在页面上看到计数器。 如果该值设置为False
,则计数器会递增,但不会在页面上显示。填充
要显示的最小位数,默认为 5,因此 3 个点击显示为 00003。
WriteDelay
更新文本文件的时间间隔。 在 Visual Studio 设计器中,此格式为 hh:mm:ss。 如果您指定一个零值(默认值,即 00:00:00),则每次访问页面时都会更新文本文件。
TextFileName
点击计数存储在服务器上的文件,相对于应用程序根目录。 如果你想把这个文件放在一个子文件夹中,你可以这样做(例如,bin\count.txt 会把文件存储在应用程序的 bin 文件夹中,而不是根目录)。
所有其他属性都只是用于应用颜色和格式,它们都应该以正常方式工作。
详细信息
呈现控件非常简单。 首先,我重写了 WebControl
的 TagKey
属性,告诉它发送一个 table
标签,而不是默认的 span
标签。
接下来,我添加 table
属性,例如边框和间距,然后将开始标签发送到浏览器。 一个 foreach
循环将每个包含数字的列添加到表格中。 最后,发送结束标签,我们就完成了。
protected override void 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
是否为 null
。 这告诉我们该控件是否在 Visual Studio IDE 中显示。 我也在检查页面是否是回发。 在任何一种情况下,计数器都不会递增。 否则,点击计数器将增加一。
如果您想使用此控件,请下载源代码并将对 DSHHitCounter.dll 的引用添加到您的 ASP.NET 应用程序中。 如果您将 HitCounter
控件添加到您的工具箱中,您可以简单地将控件拖放到设计器中的 ASPX 页面上并立即运行它。 没有比这更容易的了。
注释
此控件要求应用程序具有 FileIOPermissionAccess.Write
、FileIOPermissionAccess.Append
和 FileIOPermissionAccess.Read
权限才能访问托管它的文件夹。