Asp: RadioButtonList mensagens ainda voltar ao servidor, mesmo quando a validação do cliente falhar?

StackOverflow https://stackoverflow.com/questions/261547

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top