2

我这里发生了一些非常奇怪的事情。

我在母版页中有以下 RadComboBox 和按钮:

 <telerik:RadComboBox ID="rcbPesquisa" runat="server" CausesValidation="false"  ShowToggleImage="false" LoadingMessage="Carregando..." HighlightTemplatedItems="true" OnClientKeyPressing="onKeyPressing" EmptyMessage="Buscar" EnableLoadOnDemand="True" EnableVirtualScrolling="true" OnItemsRequested="rcbPesquisa_ItemsRequested" AllowCustomText="True" AutoPostBack="true" OnSelectedIndexChanged="rcbPesquisa_SelectedIndexChanged" Width="350">
 <asp:Button runat="server" ID="btnExcluir" Text="Excluir" OnClick="btnExcluir_Click" CausesValidation="true" ValidationGroup="Excluir" CssClass="btn" OnClientClick="return confirm('Deseja realmente excluir o registro?');" />

在页面中,我有这个验证器:

<asp:CustomValidator ID="cuvExclusaoRelacionamento" runat="server" ValidationGroup="Excluir"  OnServerValidate="cuvExclusaoRelacionamento_ServerValidate"></asp:CustomValidator>

发生的情况是:当我单击组合框并尝试加载它的项目时,在服务器上调用 cuvExclusaoRelacionamento 验证器,当然事情会向南。顺便说一句... cuvExclusaoRelacionamento_ServerValidate 上的 __EventTarget 为空

4

1 回答 1

1

不幸的是,在没有看到完整代码的情况下,我只是在猜测,我相信由于以下设置,无法解决这个问题:

  1. ValidationGroup="Excluir"分配给输入控件的 ValidationGroup 属性是控件回发时应触发的验证组;验证器控件的 ValidationGroup 属性是分配给它的组的名称;最后,提交控件(可以是按钮,也可以是输入控件)的 ValidationGroup 属性是验证器组的名称,用于在发回服务器之前验证页面。我现在应该指出,如果验证失败,它不会回发(不会触发服务器端事件处理程序)。鉴于控件的验证组与您的自定义验证器的验证组相同,当控件尝试回发到服务器时(例如,当被单击时),验证器将被触发,

  2. AutoPostBack="true"当您将控件设置为自动回发时,它将在更新时回发到服务器。鉴于您有一个 OnClick 事件,我猜您需要在控件状态更改时执行一些服务器端操作。

  3. CausesValidation="true"当设置为 true 时,分配到与提交控件相同的“验证组”的所有验证器将在控件尝试回发到服务器时被触发。正如我上面所说,如果验证失败,这将阻止回发(意味着不会触发服务器端事件处理程序)。

鉴于提供的信息,我猜您可以采取的最佳操作是设置CausesValidation="false"控件。只要您在其他地方有一个分配给“排除”验证组的提交按钮(或触发回发的其他控件),仍然可以执行验证。

于 2013-08-22T10:50:39.893 回答