Asp:RadioButtonList即使在客户端验证失败的情况下仍然会发布回服务器

Asp:RadioButtonList still posts back to server even when client validation fails?

本文关键字:情况下 服务器 布回 失败 RadioButtonList 验证 客户端 Asp      更新时间:2023-09-26

这个查询与我昨天问的这个查询有关。我在我的asp.net页面上有一个单选按钮列表,定义如下:

<asp:RadioButtonList ID="rdlSortBy" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" AutoPostBack="True" >
       <asp:ListItem Selected="True">Name</asp:ListItem>
        <asp:ListItem>Staff No</asp:ListItem>
</asp:RadioButtonList>

在客户端,我正在进行以下验证:

rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"

问题是Javascript验证按预期运行。会显示一条消息,我希望在用户保存更改之前一直保留在页面上,相反,页面会被退回,实际上我正在丢失未保存的更改。

可能出了什么问题?

我解决了这个问题,问题是我将RadioButtonList的"onclick"附加到了各个单选按钮上。

这是修复:

rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
    rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"

正在运行用于"验证"的OnClick代码,然后正在运行将控件本身注入的表单发布回的代码。

您需要拦截PostBack进程,并在它向客户端发布表单之前停止它。最好的方法是使用CustomValidator,特别是"ClientValidationFunction"属性。这将允许您的JavaScript发出信号,表明由于验证错误,不应进行回发。

相关文章: