ASP.NET CustomValidator 未触发事件

ASP.NET CustomValidator not firing the event

我有一个包含要验证的下拉列表 (Telerik RadComboBox) 控件的页面。

我已经放置了一个 CustomValidator 来验证用户是否从列表中选择了一些东西。 然后有一个LinkBut​​ton提交选择。

这是自定义验证器:

<asp:CustomValidator
ID="CustomValidator1"
runat="server"
ClientValidationFunction="validateCombo" ValidateEmptyText="true"
ErrorMessage="You must select an item with even value"
ValidationGroup="defGroup">

这是链接按钮:

<asp:LinkButton ID="LnkInsertOrder" runat="server" Text="Inserisci Ordine" OnClick="LnkInsertOrder_Click" CausesValidation="true" ValidationGroup="defGroup" CssClass="btn btn-lg btn-info"> </asp:LinkButton>

这是我用于测试的客户端函数:

function validateCombo(source, args) {
            alert('validateCombo'); //is never shown!
            args.IsValid = false;   //fake validation...
}

validateCombo 从未被调用,因为我从未看到警报,即使我尝试从 js 控制台手动调用 .net 框架函数 Page_ClientValidate("defGroup"),它始终 returns 为真,并且不会显示警报。

当我按下 link 按钮时,它执行回发并且 属性 Page.isValid 为真。

如果 defGroup 验证组的所有验证器均无效,我将尝试在用户按下 link 按钮时停止回发。

尝试在您的 CustomValidator 中添加您的 ControlToValidate:

发现客户端上的 Page_Validators 列表也是空的(它应该包含所有 asp.net 验证器),它引导我到 "solution":.net 4.5 有当您放置 ScriptManager 并且您还使用 jQuery >1.9 时,某种 'incompatibility'... 或者我可能必须使用 ScriptResourceMapping 添加 js 库Global.asax

顺便说一下,要修复它,只需使用旧的验证样式在 web.config 中添加一个键设置:

<appSettings>
 <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>

这对我来说听起来很疯狂,但是当我添加这一行时,一切都开始工作了

您缺少 缺少 "ControlToValidate" 属性 inside CustomValidator 添加那个,或者您可以在 web.config 文件中添加一个键设置来实现它正在工作。