Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何知道一个按钮被点击了多少次?_C#_Asp.net - Fatal编程技术网

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

C# 如何知道一个按钮被点击了多少次?,c#,asp.net,C#,Asp.net,就像我希望用户只发送一次信息..实际上通过电子邮件发送了一个链接,该链接打开了一个带有文本框的页面..在该页面中,用户通过单击按钮发送一些信息..现在我不希望用户反复使用该链接发送信息。。。 那我该怎么做呢?希望这些问题不会让人困惑 bool isButtonClicked = false; // this will be held in global 在按钮单击事件集isButtonClick=true button1_Click() { if(!isButtonClicked)

就像我希望用户只发送一次信息..实际上通过电子邮件发送了一个链接,该链接打开了一个带有文本框的页面..在该页面中,用户通过单击按钮发送一些信息..现在我不希望用户反复使用该链接发送信息。。。 那我该怎么做呢?希望这些问题不会让人困惑

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;
    }
}

注意,前面的伪代码:

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

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

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

如果我的解释正确,您可以通过一个唯一的id发送每封电子邮件,并通过表单数据(以及用户的电子邮件)发送

在服务器上,您将有一个数据库表,该表将每个电子邮件映射为一个唯一的id。每当用户填写表单时,您都会对照电子邮件检查id,并在表中设置一列,指示用户已随表单发送数据


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

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

int _counter = 0;

void btnCounter_click()     
{
  _counter++;  
}
编辑:


只需禁用按钮,发送数据后,..

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

根据您希望的严格程度,您可以在用户第一次单击响应时向其添加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;
        }


    }

因此,您希望用户只单击按钮一次?添加了您要求的代码。更简单(但不太可靠)的方法是将其存储在会话中。用户重新发送电子邮件的唯一方法是清除cookies@serkanhekimoglu:这正是OP提出的问题:“如何知道一个按钮被点击了多少次?”@Toad是的,有趣的问题:)然后他问“现在我不想让用户反复使用该链接发送信息”