如何将命中计数器保存到数据库并再次检索?

How to save hit counter to database and retrieve it again?

我想为我正在使用 Razor 语法的 MVC4 项目创建一个点击计数器。

我已经尝试了以下教程,但是我正在寻找一种解决方案,它不会在每次重新启动解决方案时将计数器清零。 http://www.c-sharpcorner.com/Blogs/46603/how-to-count-total-number-of-hit-in-Asp-Net-mvc.aspx

如何将命中值保存到数据库文件中,然后在每次加载解决方案时检索它?

我已经完全实施了上述教程,但是我正在寻找一种解决方案,允许我在每次打开解决方案时增加计数器。 (例如,它以 1 开头,下次打开解决方案时,它会显示 2,依此类推)

我知道您打算在数据库中添加一个新的 table 等等,但是我对实际编写的内容感到困惑。我只使用过基于用户输入的数据库(即来自 'html forms'、文本框等)。我不知道如何使整个过程自动化(在保存/编辑/加载号码方面)。它始终来自用户输入并每次都创建新视图。

编辑:我的 App_Data 解决方案文件夹中有一个名为 MyMainDB.mdf 的文件。如果我错了请纠正我,但我相信这是指数据库。双击时,它会将我发送到服务器资源管理器并显示一个名为 MyMainDBEntities 的文件。在这个数据库中,我有一个现有的 table 用于一个单独的、不相关的函数,我知道我必须在其中创建一个 table。这个table做完之后需要什么资料?只是一个名为 counter?

的整数值

这是我以前使用过数据库的示例:

@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.FirstName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Surname)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Password)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.PasswordSalt)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Age)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { email=item.Email })
            @Html.ActionLink("Delete", "Delete", new { email = item.Email })
        </td>
    </tr>

如您所见,none 是自动完成的,因为底部的 ActionLink 名称为 Edit 需要用户输入以单击按钮,然后用户输入为字段分配一个新值。

为此,您需要对正在学习的教程进行 2 处不同的更改:

1) 您需要从数据库中初始化值,而不是总是从 0 开始。

根据教程:

在 Application_Start() 方法中声明如下代码中的变量。

var serviceLayer = new Services();
var initialCount = serviceLayer.GetCurrentCountFromDatabase();
Application["Totaluser"] = initialCount;

2) 当您在 Session_Start 方法中增加计数时,您还需要在数据库中增加它。

根据教程:

编写 session_Start() 方法如下:

protected void Session_Start()  
{  
      var serviceLayer = new Services();
      var count = (int)Application["Totaluser"] + 1;
      Application.Lock();
      serviceLayer.ExecuteQueryToUpdateCountInDatabase(count);
      Application["Totaluser"] = count;  
      Application.UnLock();  
}   

这是假设 class、'Services' 与实现(c# sql 查询 - 例如那些 here)一起存在以从您的数据库中提取此数据。