2010-10-05 109 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

相關問題