C# 中继器中的CustomValidator

C# 中继器中的CustomValidator,c#,asp.net,repeater,C#,Asp.net,Repeater,我在中继器中有一个自定义验证器 <asp:Repeater runat="server" ID="lstRepeater" > <ItemTemplate> <asp:CustomValidator ID="cvValid" runat="server" CssClass="error" EnableClientScript="False" ErrorMessage="Invalid."></asp:CustomValidator

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

<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>

正如我们假设的那样,错误消息不会显示在页面上,因为我没有对中继器进行数据绑定。但是,只要重新构建中继器和数据源,我就会丢失中继器中的所有旧值。有没有简单的办法?我想不出一个优雅的方法来处理这个问题。

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

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

你的问题我不太清楚。为什么以及何时重建中继器?为什么不希望在绑定时丢失值呢?我希望在重新绑定时丢失值。我想在不必重新绑定的情况下显示错误消息。然而,我认为这是不可能的。我能想到的唯一解决方案是保存旧值,然后重新绑定所有内容。这似乎有点混乱,我想看看是否有一个更简单的解决方案,我没有看到。希望这能让事情变得更清楚。我还是有点迷路。如果您尚未对中继器进行数据绑定,您将丢失哪些“旧值”以显示错误消息?当我在加载页面上重新绑定中继器时,我将丢失中继器中的“旧值”。您说过要在不必重新绑定的情况下显示错误消息。那你为什么要重新绑定呢?你可以这么做,但你仍然有同样的问题。只要你不在回发时重新绑定列表,这就行了。
 <asp:CustomValidator ID="cvValid" runat="server" CssClass="error"EnableClientScript="False" ErrorMessage="Invalid."OnServerValidate="ServerValidation" />
void ServerValidation (object source, ServerValidateEventArgs args)
 {
    args.IsValid = false;
 }