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

时间:2015-04-07 14:26:22

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我想为我正在研究的MVC4项目制作一个使用Razor语法的点击计数器。

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

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

我已经完全实现了上面的教程,但我正在寻找一种解决方案,允许我在每次解决方案打开时增加计数器。 (例如,它从1开始,下次打开解决方案时,它会说2,依此类推)

据我所知,你打算在数据库中添加一个新表等,但是我实际上写的是什么。我只使用过基于用户输入的数据库(即来自“html表单”,文本框等)。我不知道如何使整个过程自动化(在保存/编辑/加载数字方面)。它始终来自用户输入并且每次都创建新视图。

编辑:我在名为App_Data的解决方案的MyMainDB.mdf文件夹中有一个文件。如果我错了,请纠正我,但我相信这是指数据库。双击时,它会将我发送到服务器资源管理器并显示名为MyMainDBEntities的文件。在这个数据库中,我有一个单独的,不相关的函数的现有表,我知道我必须创建一个表。制作完此表后,需要哪些信息?只是一个名为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>

正如您所看到的,这些都不是自动完成的,因为名称为ActionLink的底部的Edit需要用户输入才能单击按钮,然后用户输入为其分配新值领域。

1 个答案:

答案 0 :(得分:0)

为了做到这一点,您需要对您所遵循的教程进行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();  
}   

假设有一个类,'Services'存在实现(c#sql查询 - 例如here个)以从数据库中提取这些数据。