asp.net webforms中文本框的差异验证

时间:2012-10-22 17:56:58

标签: asp.net webforms

我正在开发一个asp.net webforms项目。我有一个带有布尔公共属性的usercontrol,名为IsRequired,可以设置为true或false。我有一个文本框,用户将在其中输入社会安全号码(SSN)。如果IsRequired = true,则用户必须输入SSN值,否则验证将失败并且需要" SSN"消息应显示在文本框旁边。如果IsRequired = false,那么如果用户没有输入SSN值,则应显示带有消息的消息框,"如果您有SSN,请输入"。本质上,该消息鼓励suer进入SSN。如果点击" OK"在消息框上,然后他们可以输入值。否则他们可以提交页面,验证不应该失败。

我正在使用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);
        }

它只能部分工作的代码问题。例如,将显示消息框,但如果单击“确定”或“cancle”,则会发布页面而不提供输入值的选项。如果IsRequired = true,并且未输入值,则验证失败,页面仍然会被提交。任何有助于解决此问题或更好的代码的帮助表示赞赏。该解决方案不一定是DevExpress特定的,而是一般的。

由于

1 个答案:

答案 0 :(得分:0)

而不是使用确认方法;根据用户选择的内容返回true或false,为什么不使用Alert()?

I.E

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

用户无法选择 - 只需一个OK按钮。 'return'也会阻止回发。