Asp: RadioButtonList continua a postare sul server anche quando la convalida del client fallisce?
-
06-07-2019 - |
Domanda
Questa query è correlata a this che ho chiesto ieri. Ho un elenco di pulsanti di opzione sulla mia pagina asp.net definito come segue:
<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>
Sul lato client, sto effettuando le seguenti convalide:
rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"
Il problema è che la convalida Javascript funziona come previsto. Viene visualizzato un messaggio e mi aspetto di rimanere sulla pagina fino a quando l'utente non ha salvato le modifiche, invece la pagina viene posticipata ed effettivamente sto perdendo le modifiche non salvate.
Cosa potrebbe andare storto?
Soluzione
Ho risolto questo problema, il problema era che stavo collegando il " onclick " della RadioButtonList invece sui singoli pulsanti di opzione.
Questa è la correzione:
rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
Altri suggerimenti
Il codice OnClick
che stai utilizzando per " validare " viene eseguito e quindi viene eseguito il codice che registra il modulo restituito dal controllo stesso.
È necessario intercettare il processo PostBack e interromperlo prima che pubblichi il modulo lato client. Il modo migliore per farlo sarebbe con un CustomValidator
e in particolare il " ClientValidationFunction " proprietà. Ciò consentirà al tuo JavaScript di segnalare che il postback non dovrebbe verificarsi a causa di un errore di convalida.