如何知道单击按钮的次数?

时间:2010-10-05 11:10:57

标签: c# asp.net

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

7 个答案:

答案 0 :(得分:2)

小心,提前伪代码:

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

答案 1 :(得分:2)

对我而言,似乎他希望每个用户使用该表单发送一次信息。

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

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

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

答案 2 :(得分:2)

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


    }

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

int _counter = 0;

void btnCounter_click()     
{
  _counter++;  
}

编辑:

在发送数据后禁用该按钮..

答案 5 :(得分:0)

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

答案 6 :(得分:0)

放入一个隐藏字段,并在用户第一次点击按钮时为其分配值。检查隐藏字段的值并进行比较。