我在中继器中有一个自定义验证器

<asp:Repeater runat="server" ID="lstRepeater" >
    <ItemTemplate>
        <asp:CustomValidator ID="cvValid" runat="server" CssClass="error" EnableClientScript="False" ErrorMessage="Invalid."></asp:CustomValidator>
        <asp:TextBox runat="server" ID="tbCustomAnswer"></asp:TextBox>
    </ItemTemplate>
</asp:Repeater>


作为测试,我在OnClick事件上尝试了以下代码

    foreach(RepeaterItem item in lstRepeater.Items)
    {
        CustomValidator cvValid= (CustomValidator)item.FindControl("cvValid");
        cvValid.IsValid = false;
    }


可以假设,该错误消息未显示在页面上,因为我没有对转发器进行数据绑定。但是,一旦重新构造了转发器和数据源,我就会丢失转发器内部的所有旧值。有没有解决此问题的简单方法?我想不出一种优雅的方式来解决这个问题。

最佳答案

为什么不能只让OnServerValidate函数返回false?

 <asp:CustomValidator ID="cvValid" runat="server" CssClass="error"EnableClientScript="False" ErrorMessage="Invalid."OnServerValidate="ServerValidation" />



  


void ServerValidation (object source, ServerValidateEventArgs args)
 {
    args.IsValid = false;
 }

关于c# - 中继器中的CustomValidator,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/808448/

10-09 01:08