Asp: ¿RadioButtonList sigue publicando en el servidor incluso cuando falla la validación del cliente?
-
06-07-2019 - |
Pregunta
Esta consulta está relacionada con esta que pregunté ayer. Tengo una lista de botones de radio en mi página asp.net definida de la siguiente manera:
<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>
En el lado del cliente, estoy haciendo las siguientes validaciones:
rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"
El problema es que la validación de Javascript se ejecuta como se esperaba. Se muestra un mensaje y espero permanecer en la página hasta que el usuario haya guardado los cambios, en su lugar, la página se vuelve a publicar y efectivamente estoy perdiendo los cambios no guardados.
¿Qué podría estar yendo mal?
Solución
Solucioné esto, el problema era que estaba adjuntando el " onclick " de RadioButtonList en lugar de los botones de radio individuales.
Esta es la solución:
rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
Otros consejos
El código OnClick
que está utilizando para " validar " se está ejecutando y luego se está ejecutando el código que publica el formulario que el control mismo inyecta.
Debe interceptar ese proceso PostBack y detenerlo antes de que publique el formulario en el lado del cliente. La mejor manera de hacerlo sería con un CustomValidator
y específicamente la " ClientValidationFunction " propiedad. Esto permitirá que su JavaScript indique que la devolución no debe ocurrir debido a un error de validación.