2012-10-22 70 views
0

我正在開發一個asp.net webforms項目。我有一個帶有布爾公共屬性的用戶控件,名稱爲IsRequired,可以設置爲true或false。我有一個文本框,用戶將輸入社會安全號碼(SSN)。如果IsRequired = true,那麼用戶必須輸入SSN值,否則驗證應該失敗,並且應該在文本框旁邊顯示「需要SSN」消息。如果IsRequired = false,那麼如果用戶沒有輸入SSN值,那麼應該在消息框中顯示消息「如果你有SSN,請輸入」。本質上這個信息鼓勵suer進入SSN。如果在消息框上單擊「確定」,則可以輸入該值。否則他們可以提交頁面,驗證不應該失敗。在asp.net中對文本框進行差異驗證webforms

我使用的DevExpress控制,並提出了以下解決方案:

ASCX頁:

<dx:ASPxTextBox ID="SsnTextBox" runat="server" OnValidation="SocialSecurity_Validation"> 
       <MaskSettings Mask="999999999"></MaskSettings> 
      </dx:ASPxTextBox> 

的代碼隱藏:

if (IsSubscriber && (e.Value == null || (string)e.Value == "")) 
     { 
      SsnTextBox.ErrorText = "Required"; 
      e.IsValid = false; 
     }   
     else if (!IsSubscriber && (e.Value == null || (string)e.Value == "")) 
     { 
      e.IsValid = true; 
      Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "UserControl", 
                "confirm('If Social Security Number is available, please enter it!')", true); 
     } 

與代碼的問題其僅部分工作。例如,顯示消息框,但單擊ok或cancle時,該頁面將被髮布而不提供輸入值的選項。如果IsRequired = true,並且沒有輸入值,則驗證失敗,仍然提交頁面。任何幫助解決這個或更好的代碼表示讚賞。該解決方案不必是DevExpress特定的,而是可以是通用的。

謝謝

+0

使用return confirm而不是僅僅確認 – middelpat

+0

你最終得到了這個工作嗎?任何答案都有幫助嗎? – Darren

回答

0

而不是使用確認方法;這將根據用戶選擇的內容返回true或false,爲什麼不使用Alert()呢?

return Alert('If Social Security Number is available, please enter it!') 

不會有用戶的選擇 - 只是一個OK按鈕。 '返回'也會阻止回發。