我正在開發一個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特定的,而是可以是通用的。
謝謝
使用return confirm而不是僅僅確認 – middelpat
你最終得到了這個工作嗎?任何答案都有幫助嗎? – Darren