Asp: RadioButtonList continua a postare sul server anche quando la convalida del client fallisce?

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

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top