Asp: RadioButtonList по-прежнему отправляет сообщения обратно на сервер, даже если проверка клиента завершается с ошибкой?
-
06-07-2019 - |
Вопрос
Этот запрос связан с это тот, который я задал вчера.У меня есть список переключателей на моей странице asp.net, определенный следующим образом:
<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>
На стороне клиента я выполняю следующие проверки:
rdlSortBy.Attributes("onclick") = "javascript:return prepareSave() && prepareSearch();"
Проблема в том, что проверка Javascript выполняется так, как ожидалось.Отображается сообщение, и я ожидаю, что останусь на странице до тех пор, пока пользователь не сохранит изменения, вместо этого страница публикуется обратно, и фактически я теряю несохраненные изменения.
Что могло пойти не так?
Решение
Я исправил это, проблема заключалась в том, что я прикреплял "onclick" списка RadioButtonList вместо этого к отдельным переключателям.
Это и есть решение проблемы:
rdlSortBy.Items(0).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
rdlSortBy.Items(1).Attributes("onclick") = "javascript:return isDirtied() && prepareSearch();"
Другие советы
Тот самый OnClick
выполняется код, который вы используете для "проверки", а затем выполняется код, который отправляет форму обратно, которую вводит сам элемент управления.
Вам нужно перехватить этот процесс обратной передачи и остановить его до того, как он отправит форму на стороне клиента.Лучшим способом сделать это было бы с помощью CustomValidator
и, в частности, свойство "ClientValidationFunction".Это позволит вашему JavaScript сигнализировать о том, что обратная отправка не должна происходить из-за ошибки проверки.