Asp:RadioButtonListは、クライアントの検証が失敗しても、サーバーにポストバックしますか?

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

質問

このクエリは、これに関連したものです昨日。 次のように定義された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から通知できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top