我有两个文本框字段和一个“保存”按钮。两个文本框都有customvalidator来进行验证。 如果两个文本框都通过验证,然后单击“保存”,则会在标签控件中显示成功消息(从服务器回发)。 如果任一文本框验证失败,则单击“保存”按钮,错误消息将显示在validationsummary中(在客户端)。 我的情况是:首先最终用户在文本框中输入有效值,然后单击“保存”按钮,标签中会显示成功消息。然后最终用户将值更改为无效值,然后点击“保存”,现在屏幕上显示成功和错误消息。这是因为页面没有刷新。成功消息仍在屏幕上,同时客户端验证失败,因此错误消息显示在validationsummary中。 那么当有客户端错误消息时,如何摆脱成功消息呢? 以下是我的代码示例:
function validate1(src, args){
message="The value is out of range";
var exp=/^[\s\S]{0,8}$/;
reg=null;
if(args.Value){
reg=new RegExp(exp);
if(!reg.test(args.Value)){
args.IsValid=false;
src.errormessage=message;
return;
}
args.IsValid=true;
return;
}
}
<asp:ValidationSummary ID="ValidationSummary" runat="server" ShowMessageBox="false"
ShowSummary="true" ValidationGroup="ValidationGroup" ForColor="Red" />
<asp:Literal ID="ltlMessage" runat="server"></asp:Literal>
<asp:TextBox ID="txt1" runat="server" ValidationGroup="ValidationGroup"></asp:TextBox>
<asp:CustomValidator ID="cmv1" runat="server" ControlToValidate="txt1" ValidationGroup="ValidationGroup"
Display="None" ClientValidationFunction="validate1"></asp:CustomValidator>
<asp:TextBox ID="txt2" runat="server" ValidationGroup="ValidationGroup"></asp:TextBox>
<asp:CustomValidator ID="cmv2" runat="server" ControlToValidate="txt2" ValidationGroup="ValidationGroup"
Display="None" ClientValidationFunction="validate1"></asp:CustomValidator>
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" ValidationGroup="ValidationGroup" />
protected void btnSave_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
bool result = DoSomething();
if (result = true)
{
ltlMessage.Text = "Success Message";
}
else
{
ltlMessage.Text = "Failed Message";
}
}
}