我有一个页面,下拉列表(Telerik RadComboBox)控件要验证。
我已经放置了一个CustomValidator来验证用户是否已从列表中选择了某些内容。 然后有一个LinkButton来提交选择。
这是CustomValidator:
<asp:CustomValidator
ID="CustomValidator1"
runat="server"
ClientValidationFunction="validateCombo" ValidateEmptyText="true"
ErrorMessage="You must select an item with even value"
ValidationGroup="defGroup">
这是LinkButton:
<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(&#34; defGroup&# 34;),它总是返回true,并且不显示警报。
当我按下链接按钮时,它会执行回发,属性 Page.isValid 为真。
如果defGroup验证组的所有验证器都无效,我会在用户按下链接按钮时尝试停止回发。
答案 0 :(得分:1)
发现客户端上的Page_Validators列表也是空的(它应该包含所有的asp.net验证器),它引导我进入&#34;解决方案&#34;:.net 4.5有一个&#39;不相容性&#39;当你放一个 ScriptManager 并且你也使用jQuery&gt; 1.9 ...或者我必须在Global.asax中使用ScriptResourceMapping添加js libs
BTW要修复它,只需使用旧的验证样式在web.config中添加密钥设置:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
这对我来说听起来很疯狂,但是当我添加这一行时,一切都开始起作用了
答案 1 :(得分:-1)
尝试在CustomValidator中添加ControlToValidate:
答案 2 :(得分:-2)
你缺少缺少&#34; ControlToValidate&#34; CustomValidator中的属性添加,或者您可以在web.config文件中添加密钥设置以使其正常工作。