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();"
他のヒント
&quot;検証&quot;に使用している OnClick
コードが実行されてから、コントロール自体が挿入するフォームをポストバックするコードが実行されています。
フォームをクライアント側に投稿する前に、そのPostBackプロセスをインターセプトして停止する必要があります。これを行う最良の方法は、 CustomValidator
を使用して、具体的には&quot; ClientValidationFunction&quot;を使用することです。プロパティ。これにより、検証エラーが原因でポストバックが発生しないことをJavaScriptから通知できます。
所属していません StackOverflow