私はシンプルです:「はい」ラジオボタンがチェックされている場合は、クライアント側とサーバー側の両方の検証を提供しました。私が見つけたのは:CustomValidatorがクライアントで起動しますが、検証が失敗した場合に検証コントロールが表示されません。
- クライアントの検証中に警告メッセージが表示され、正しく表示されません。
- 検証コントロールはエラーメッセージを表示せず、サーバーがヒットします。
- サーバーがヒットし、検証に失敗すると、コントロールは適切なエラーメッセージを表示します。
クライアントが検証の面で正しく動作しているが、エラーメッセージが表示されずにサーバーに接続されていないのはなぜですか?
asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script src="Scripts/jquery-1.7.2.js" type="text/javascript"></script>
<script type="text/javascript">
function testClientValidation(src, args) {
if ($('#<%=rblstTest.ClientID%>' + ' input:checked').length == 1) {
if ($('#<%=rblstTest.ClientID%>' + ' input:checked').val().toLowerCase() == "yes") {
args.isValid = !($('#<%=txtTest.ClientID%>').val() == "");
} else {
args.isValid = true;
}
} else {
args.isValid = true;
}
alert(args.isValid);
}
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div>
<asp:RadioButtonList ID="rblstTest" RepeatDirection="Horizontal" RepeatLayout="Flow" runat="server">
<asp:ListItem>Yes</asp:ListItem>
<asp:ListItem>No</asp:ListItem>
</asp:RadioButtonList>
<asp:TextBox ID="txtTest" runat="server"/>
<asp:CustomValidator ID="cust" ControlToValidate="rblstTest"
OnServerValidate="testSeverValidation"
ClientValidationFunction="testClientValidation"
Display="Dynamic"
ErrorMessage="Error!" runat="server"/>
<asp:LinkButton runat="server" ID="lnkSubmit" Text="Submit" />
</div>
</asp:Content>
の受け入れられて答えが全く将来のユーザーのために有用ではありませんからご確認ください。 。理由は、クライアント側のコードは、はい(Yes)またはいいえ(No)をクリックすると、サーバー(Code Behind)にユーザーを送ります。ページがクライアント側で正しく検証された場合は、コードの背後に移動する必要があります。 – Pankaj
@Guest質問からわかるように、クライアントの検証に失敗してもエラーは表示されず、ポストバックが行われます。これは、trueまたはfalseの値がargsパラメーターの間違ったメンバーに設定されているためです。 1つの 'IsValid'を修正するように設定され、値がfalseの場合、サーバーへのページの送信が停止され、エラーが表示されます。 – Ramesh
OPの場合、常にサーバーにリダイレクトされます。検証済みかどうか – Pankaj