我正在开发一个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特定的,而是一般的。
由于
答案 0 :(得分:0)
而不是使用确认方法;根据用户选择的内容返回true或false,为什么不使用Alert()?
I.E
return Alert('If Social Security Number is available, please enter it!')
用户无法选择 - 只需一个OK按钮。 'return'也会阻止回发。