使用自定义验证器停止服务器端执行
stopping the server side execution with custom validator
我有一个带有最低年龄自定义验证器的表单。我在那个表格上有提交按钮。当自定义验证器启动时,我不希望提交按钮内的代码执行,所以当不满足最低年龄要求时,我将 ServerValidateEventArgs args 设置为 false。提交按钮内的代码被执行
下面是我的自定义验证器:
<asp:CustomValidator Display="None" ID="CustomValidator1" runat="server" OnServerValidate="ageValidator" ControlToValidate="txtDOB" ErrorMessage="CustomValidator" />
下面是我的出生日期文本框:
<input id="txtDOB" placeholder="mm/dd/yyyy" type="text" data-role="datebox" value="" runat="server" ></input>
我在那个页面上也有提交按钮:
<asp:Button ID="btnSubmit" runat="server" Text="Submit" data-icon="check" OnClick="btnSubmit_Click" UseSubmitBehavior="true" />
下面是我的自定义验证器代码:
protected void ageValidator(object source, ServerValidateEventArgs args)
{
DateTime dtStart = DateTime.Parse(txtDOB.Value.ToString());
TimeSpan sp = DateTime.Now - dtStart;
if (sp.Days < 16 * 365)
{
args.IsValid = false;
CustomValidator1.ErrorMessage = "You have to be at least 16 ";
return ;
}
else
args.IsValid = true;
}
protected void btnSubmit_Click(object sender, System.EventArgs e)
{
// some code here
}
当我点击提交按钮时,自定义验证器代码被执行,然后无论参数是真还是假,提交按钮中的代码都会被执行。如果 args 为假,我不希望执行提交按钮中的代码,但这并没有发生。
任何帮助将不胜感激。
在 btnSubmit_Click
中,您可以测试 Page.IsValid
(您的自定义验证器设置为 false)并决定是否根据那个答案。
评论 :
您可以通过 属性 ErrorMessage =“您必须至少年满 16 岁”在 ASPX 本身中设置错误消息。方法中不需要return
.
你必须在这样的方法中添加Page.IsValid
。
if (Page.IsValid)
{
SomeLabelMessage.Text = "Page is valid.";
}
else
{
SomeLabelMessage.Text = "Page is not valid!";
}
我有一个带有最低年龄自定义验证器的表单。我在那个表格上有提交按钮。当自定义验证器启动时,我不希望提交按钮内的代码执行,所以当不满足最低年龄要求时,我将 ServerValidateEventArgs args 设置为 false。提交按钮内的代码被执行
下面是我的自定义验证器:
<asp:CustomValidator Display="None" ID="CustomValidator1" runat="server" OnServerValidate="ageValidator" ControlToValidate="txtDOB" ErrorMessage="CustomValidator" />
下面是我的出生日期文本框:
<input id="txtDOB" placeholder="mm/dd/yyyy" type="text" data-role="datebox" value="" runat="server" ></input>
我在那个页面上也有提交按钮:
<asp:Button ID="btnSubmit" runat="server" Text="Submit" data-icon="check" OnClick="btnSubmit_Click" UseSubmitBehavior="true" />
下面是我的自定义验证器代码:
protected void ageValidator(object source, ServerValidateEventArgs args)
{
DateTime dtStart = DateTime.Parse(txtDOB.Value.ToString());
TimeSpan sp = DateTime.Now - dtStart;
if (sp.Days < 16 * 365)
{
args.IsValid = false;
CustomValidator1.ErrorMessage = "You have to be at least 16 ";
return ;
}
else
args.IsValid = true;
}
protected void btnSubmit_Click(object sender, System.EventArgs e)
{
// some code here
}
当我点击提交按钮时,自定义验证器代码被执行,然后无论参数是真还是假,提交按钮中的代码都会被执行。如果 args 为假,我不希望执行提交按钮中的代码,但这并没有发生。
任何帮助将不胜感激。
在 btnSubmit_Click
中,您可以测试 Page.IsValid
(您的自定义验证器设置为 false)并决定是否根据那个答案。
评论 :
您可以通过 属性 ErrorMessage =“您必须至少年满 16 岁”在 ASPX 本身中设置错误消息。方法中不需要return
.
你必须在这样的方法中添加Page.IsValid
。
if (Page.IsValid)
{
SomeLabelMessage.Text = "Page is valid.";
}
else
{
SomeLabelMessage.Text = "Page is not valid!";
}