2011-11-13 61 views
1

我是新來的ASP.net這可能是一個簡單的問題,但我不知道該怎麼做。 我在我的頁面上有一個asp.wizard控件,其中「步驟1」我有一個接受訂單號的文本框 如果用戶在文本框中輸入訂單號並與數據庫匹配,它將用戶移動到嚮導步驟2。用戶輸入了錯誤的值或保持空白,驗證器控件警告輸入值或輸入的值是錯誤的。 但我擔心,如果用戶嘗試輸入值超過三次它應該顯示彈出窗口,並說消息「你已經嘗試三次,你沒有一個有效的訂單號」 我試圖增加我的櫃檯在serverValidate事件函數中,但是在頁面的每次回發中將計數器值重置爲0。 我現在不怎麼做,因爲每次點擊下一個按鈕後我的頁面回發o我的嚮導頁面我的計數器值重置爲0Asp.net計數用戶嘗試

+3

顯示你的代碼,請。 – Icarus

回答

0
if (Wizard1.ActiveStepIndex == 0) 
    { 
     if ((HiddenField1.Value == "0")){ 
      HiddenField1.Value = "1"; 
    } 
     else if ((HiddenField1.Value == "1")) 
     { 
      HiddenField1.Value = "2"; 
     } 

     else if ((HiddenField1.Value == "2")) 
     { 
      HiddenField1.Value = "3"; 

      Response.Write("<script language='javascript'>alert('you tried 3 times')</script>"); 
      } 



    Label21.Text = HiddenField1.Value; 
    } 
0

將您的計數器存儲在隱藏文本字段中。這種方式的價值將經受住回傳。您可以在javascript中(當用戶按下按鈕時)或在服務器上增加計數器。

這是一個粗略的框架:

一個字段添加到您的網頁類似於以下內容:

<input type="hidden" runat="server" id="txtCounter" /> 

在你的後臺代碼:

if String.IsNullOrEmpty(txtCounter.Value) { 
    txtCounter.Value = "1"; 
} else { 
    int wCounter; 
    wCounter = Convert.ToInt32(txtCounter.Value); 
    if (wCounter >= 3) { 
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "Count Exceeded", "alert('The number of tries has been exceeded.');", True) 

    } else { 
    wCounter += 1; 
    txtCounter.Value = wCounter.ToString(); 
    } 
} 
+0

你可以給任何示例代碼如何做到這一點。我打我的頭幾個小時這樣做 – future

+0

谷歌它,你會有多個樣品在你手上 –

+0

我應該在那裏代碼後面的代碼。在page_load事件或 – future

2

您可以將其保存在一個不會重置的會話變量。

+0

請提供代碼在哪裏使用會話在page_load上或在哪裏以及如何。我對asp.net真的很陌生。 – future

+0

在會話中如何處理。我試圖保存在我的page_load事件會話,但它的說會話是正確的當前上下文ViewState(「MyCounter」) – future

+0

不正確的當前上下文 – future

2
<input type="hidden" id="hdn" runat="server" value="0" /> 

背後的代碼,在每個失敗的嘗試:

hdn.Value=""+(ConvertToInt32(hdn.Value)+1); 
if(hdn.Value=="3") 
// do something 
+0

感謝您的快速回復,但我把這段代碼放在我的代碼後面的文件。在page_load事件或 – future

+0

@uture:標記(' Icarus

+0

給出錯誤 hdn.Value =「」+ int.Parse(hdn.Value)+1;輸入字符串的格式不正確。 – future