繁体   English   中英

如何知道一个按钮被点击了多少次?

[英]How to know how many times a button has been clicked?

就像我希望用户仅发送一次信息..实际上已经通过电子邮件发送了一个链接,该链接打开了一个带有文本框的页面..在那个用户中,通过单击按钮发送了一些信息..现在我不希望用户使用该链接一遍又一遍地发送信息..so,我该怎么办呢? 希望问题不会引起混淆

当心,伪代码在前:

if (MyButton.Enabled) {
    MyButton.Enabled = false;
    SendInfo();
}

在我看来,他似乎希望每个用户使用该表格发送一次信息。

如果我的解释正确,那么您可以通过每封电子邮件发送唯一的ID,并随表格数据一起发送(连同用户的电子邮件)。

在服务器上,您将具有一个数据库表,该表映射具有唯一ID的每封电子邮件。 每当用户填写表单时,您都将对照电子邮件检查ID,并在表中设置一列,表明该用户已经使用该表单发送了数据。

接收数据时,您要做的第一件事是检查数据库并检查数据是否已发送。 如果不是,请接受数据,否则您可能会显示错误消息或其他内容。

根据您希望的严格程度,您可以在用户第一次单击Cookie时向用户响应添加cookie,这表示他们已经单击过,然后在后续请求中存在该cookie时忽略任何进一步的点击。 如果他们有这个cookie,那么您也可以在查看页面时禁用该控件。 否则,如果他们是登录用户,则可以将点击记录存储在数据库中,并通过检查数据库中该用户单击此控件的记录来拒绝后续点击。

这是一些要演示的代码:

 public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            var ctrl = sender as WebControl;
            if (!HasButtonBeenClicked(ctrl.ClientID))
            {
                Response.Write("Click accepted");
            }
            else
            {
                Response.Write("You have clicked this already!");
            }
        }

        private bool HasButtonBeenClicked(string controlId)
        {
            if (Request.Cookies["has_clicked_"+ controlId] != null)
            {
                return true;
            }
            var cookie = new HttpCookie("has_clicked_" + controlId);
            Response.Cookies.Add(cookie);
            return false;
        }


    }
bool isButtonClicked = false; // this will be held in global

在按钮单击事件中设置isButtonClick = true;

button1_Click()
{
    if(!isButtonClicked)
    {
    // which means button is clicked once, put your action code here
    isButtonClicked = true;
    }
}

有很多方法可以做到这一点。例如:

int _counter = 0;

void btnCounter_click()     
{
  _counter++;  
}

编辑:

发送数据后,只需禁用该按钮即可。

在您的描述中-看起来像调查页面,您希望确保每个用户仅提交一次。 这可以通过为每个用户创建一个唯一的标识符,然后将该值包括在链接/表单中来实现。 在服务器端,您必须忽略具有相同标识符的重复提交(或选择最后一个)。

当用户第一次单击按钮时,放置一个隐藏字段并为其分配值,因此请检查隐藏字段的值并进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM