Asp: RadioButtonList mensagens ainda voltar ao servidor, mesmo quando a validação do cliente falhar?
-
06-07-2019 - |
Pergunta
Esta consulta está relacionada com a esta Pedi ontem. Eu tenho uma lista botão de rádio na minha página asp.net definidos da seguinte forma:
<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>
No lado do cliente, estou fazendo as seguintes validações:
rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"
O problema é que a validação Javascript executado conforme o esperado. É exibida uma mensagem e espero permanecer na página até que o usuário salvou as alterações, em vez que a página é enviada de volta e eficaz Estou perdendo alterações não salvas.
O que poderia estar acontecendo de errado?
Solução
Eu reparei isso, o problema era que eu estava anexando o "onclick" do RadioButtonList em vez disso, os botões de opção individual.
Esta é a correção:
rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
Outras dicas
O código OnClick
você está usando para "validar" está sendo executado e, em seguida, o código que mensagens o formulário de volta, que o próprio controle injeta está sendo executado.
Você precisa interceptar esse processo PostBack e pará-lo antes que ele mensagens do lado do cliente do formulário. A melhor maneira de fazer isso seria com um CustomValidator
e, especificamente, a propriedade "ClientValidationFunction". Isto permitirá que seu JavaScript para sinalizar que o posto de volta não deve ocorrer devido a um erro de validação.