如果点击按钮3次,我想做一些动作。就像用户输入错误的密码3次页面一样,页面必须重定向到另一个页面或其他内容。
如果第三次点击按钮,如何在ASP.NET C#中执行操作?
答案 0 :(得分:1)
要检查用户是否已执行“x”次动作,您需要将其保存一段时间。如果你正在使用关系数据库,你可以调用一个表LoginAttempts,然后存储所有unsucfulfull登录。拥有该表时,您可以根据它构建逻辑。
答案 1 :(得分:0)
多种解决方案:
1)会话变量(Okay solution)
2)静态类变量(不是一个好的解决方案)
3)DB记录字段(最佳解决方案)
4)在视图和控制器之间来回传递标志变量(不是一个好主意)。
5)浏览器cookie(可以清除)
答案 2 :(得分:0)
我会使用会话变量。
另一个解决方案可能是在users表中有一个名为LoginAttempt(int)的列(默认为0),我将如何使用该列
假设您的数据库中有一个名为TblUsers的表,其中包含这些列
让我们假设您在Login.aspx页面上有两个TextBox;
TextBoxUserName
,TextBoxPassword
。假设你的TblUsers中有一条记录就像这样
Id : 1
UserName : rammstein
Password : ohnedich
LoginAttempt : 0
现在,您使用的是Login.aspx.cs代码
你有一个方法,你有
TblUsers user = new TblUsers();
你有bool login = false;
。
您已获得TextBoxUserName.Text
的用户名,检查是否存在具有此用户名的用户,如果存在,则执行以下代码。
让我们关注这个场景
给定用户尝试使用
登录UserName:rammstein
Password:duhast
使用用户名rammstein检查您的数据库并找到它,然后在TblpUsers user
中取出该记录,然后检查user.Password
和TextBoxPassword.Text
是否匹配。它与上述内容不匹配例子是因为
user.Password
为ohnedich
但TextBox.Password
为duhast
。这意味着登录失败,因此您将false设置为bool login
。
其他所有内容都属于以下代码if-else
条件
if(user.LoginAttempt < 3){
if(!login)
{
user.LoginAttempt = user.LoginAttempt + 1;
}
else
{
user.LoginAttempt = 0;
}
}
else
{
//do something
}