如何将命中计数器保存到数据库并再次检索?
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)一起存在以从您的数据库中提取此数据。
我想为我正在使用 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)一起存在以从您的数据库中提取此数据。