调用 ajaxrequest 后,asp 验证控件未触发

Posted

技术标签:

【中文标题】调用 ajaxrequest 后,asp 验证控件未触发【英文标题】:asp validation controls not firing after ajaxrequest been called 【发布时间】:2014-04-05 21:46:11 【问题描述】:

Asp 验证控件在 ajaxrequest 被调用后未触发。

我正在使用以下代码调用函数来刷新网格。

window['My Grid Client ID'].AjaxRequest('My Grid Unique ID', 'Rebind');

Grid 刷新后,第一次在提交按钮的click 上未触发验证。下次点击它工作正常。

希望这是由于ajax 的问题。!!

如果有人遇到这种情况请回复...

【问题讨论】:

【参考方案1】:

正如您提到的,您使用的是Telerik。我建议您使用下面的代码而不是AjaxRequestrebind 网格,这将来自ClientSideRebind 网格。

<telerik:RadCodeBlock runat="server">
<script type="text/javascript">
    function refreshGrid() 
        var grid = $find("<%=RadGrid1.ClientID%>");
        var masterTableView = grid.get_masterTableView();
        masterTableView.fireCommand("Rebind");
    
</script>
</telerik:RadCodeBlock>

如需更多帮助,您可以使用以下链接

RadGrid Client side API RadGrid Client object

这不会使用任何AjaxRequest 来绑定网格,也不会影响您的任何Validation 功能。

希望这会有所帮助..!!!

【讨论】:

【参考方案2】:

您使用什么验证?如果它是自定义验证,并且您的 JavaScript 代码在您使用 ajax 请求加载的用户控件中,则该脚本实际上不会存在于浏览器中。将其包装在 RadScriptBlock 控件中或使用 ScriptManager.RegisterClientScriptBlock 方法使其在页面上运行。

此外,请确保您为所有验证器设置了正确的 ValidationGroup 设置。如果某些提交按钮与 AJAX 一起出现,如果您没有定义组,这可能会破坏您现有的页面。

【讨论】:

以上是关于调用 ajaxrequest 后,asp 验证控件未触发的主要内容,如果未能解决你的问题,请参考以下文章

[转]验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件

在ASP.NET里怎么让文本框里输入非中文后给个提示“只能输入中文”

Asp.net中文本框非空验证及比较验证的一种简单方法

ASP.NET验证控件总结

asp.net中验证控件的使用方法

在 asp.net 控件上动态禁用验证