2010-10-05 118 views
0

像我想要的用户发送一些信息只有一次..actually已将通电子邮件中的链接,打开文本框的网页在它..In用户通过点击一个button..now发送一些信息,我不希望用户反复使用该链接发送信息... ..我如何去abt它?希望疑问句心不是混乱如何知道按钮被点击了多少次?

+0

所以你希望用户点击按钮只有一次? – user279521 2010-10-05 11:12:37

+0

添加了您要求的代码。 – Richard 2010-10-05 12:22:43

回答

2

对我来说似乎他希望每个用户使用的形式,一旦发送信息。

如果我在我的理解是否正确,你可以通过一个唯一的ID发送给每个电子邮件和表单数据发送到(与用户的电子邮件一起)。

在服务器上,你必须与一个唯一的ID每个电子邮件映射数据库表。无论用户何时填写表格,都要根据电子邮件检查ID,并在表格中设置一列表明用户已经使用表格发送了数据。

当接收数据是检查数据库和检查数据已经送到你要做的第一件事。如果没有,请接受数据,否则您可能会显示错误消息或其他内容。

+0

cool..thanks ... – Serenity 2010-10-05 11:29:12

+0

更容易(但不够健壮)只是将它存储在会话中。用户重新发送电子邮件的唯一方法是清除Cookies – Toad 2010-10-05 11:48:15

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

当心,伪码超前:

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

但有效。 :) +1 – Nayan 2010-10-05 12:11:44

0

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

1

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

int _counter = 0; 

void btnCounter_click()  
{ 
    _counter++; 
} 

编辑:

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

+0

您的代码只是计算按钮被点击的次数:) – 2010-10-05 11:27:49

+0

@serkan hekimoglu:这就是OP询问的确切问题:“如何知道按钮已被多次播放点击?“ – Toad 2010-10-05 11:55:57

+1

@Toad是的,有趣的问题:)然后他问“现在我不希望用户反复使用该链接发送信息” – 2010-10-05 12:01:37

0

放隐藏字段,并在用户首次单击该按钮时为其分配值。请检查隐藏字段的值并进行比较。

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


    } 
+0

是啊肯定..代码会很棒..thnx – Serenity 2010-10-05 11:59:55

+0

现在用代码确定 – Richard 2010-10-05 12:22:25

相关问题