为什么在ASP中没有我的CustomValidator ?NET 4.0工作
本文关键字:NET 工作 CustomValidator 我的 ASP 为什么 | 更新日期: 2023-09-27 17:50:45
净
<asp:TextBox ID="txtEnd" runat="server" placeholder="12:59"></asp:TextBox>
<asp:RadioButtonList ID="rblTime2" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
<asp:ListItem>AM</asp:ListItem>
<asp:ListItem>PM</asp:ListItem>
</asp:RadioButtonList>
CustomValidator
<asp:CustomValidator ID="ValidateStartTime" ControlToValidate="txtEnd" OnServerValidate="ValidateStartTimeFun" runat="server" ErrorMessage="*required"></asp:CustomValidator>
后台代码 protected void ValidateStartTimeFun(object source, ServerValidateEventArgs args)
{
try
{ if (txtStart.Text != "" && rblTime.SelectedValue != null )
{ args.IsValid = true; }}
catch (Exception ex)
{ args.IsValid = false; }
}
如果我把整个CodeBehind改成这个,它甚至不会给我一个*;
protected void ValidateStartTimeFun(object source, ServerValidateEventArgs args)
{
args.isValid = false;
}
如果您正在验证空输入,如果您设置ControlToValidate
属性并且不将ValidateEmptyText
属性设置为true
,则自定义验证器不会触发,否则框架期望您使用RequiredFieldValidator
。
如果您设置了ControlToValidate
属性,则如果用户不输入/选择任何内容,CustomValidator
将不会触发。但如果你忽略它,它会在表单提交时触发。
所以把它去掉
<asp:CustomValidator ID="ValidateEndTime"
OnServerValidate="ValidateEndTimeFun"
runat="server" ErrorMessage="*required">
</asp:CustomValidator>
由于您正在验证多个控件,我将这样做,否则您也可以将ValidateEmptyText
属性设置为true
,如gfyans所提到的。
我认为ValidationGroup元素缺失了。
您应该为验证器和按钮设置相同的ValidationGroup
值(或者使用Page的Validate
方法以编程方式检查它),它必须检查值
我已经很长时间没有使用更新面板了,因为这也是我从Sarawut Positwinyu找到的答案:
Custom Validator, when placing in formview will not show its error message after
server-side validation (though it has been validated and result is invalid) the
mean to fix this in to wrap it by a Update Panel.
我还记得总是在validationgroup="组的名称"中输入所有被验证的控件,并在自定义验证器中将validateemptytext设置为true。
答案参考
为什么不对不同的控件使用不同的验证器呢?并且还可以在服务器中工作自定义验证器,只需从标记中丢弃ControlToValidate属性。并检查后面代码中使用的条件