0

ユーザーコントロールにあるチェックボックスがあり、ユーザーコントロールはウィザードコントロールにあり、ウィザードコントロールはマスターページを持つコンテンツページにあります。

ウィザード コントロールが終了する前に、チェックボックスをオンにする必要があります。チェックボックスと customvalidator は、ウィザード コントロールの最後のステップにあります。

今ではすべてがFirefoxで正常に動作し、IEでもテストすると. しかし、どういうわけか、他の人はチェックボックスをチェックせずにプロセスを続行できるかもしれません. チェックボックスにはトグルボタンエクステンダーもあります。それが問題ではないことを願っています。

私のインラインJavaScript(ユーザーコントロール内)

<script language="javascript" type="text/javascript">
    // <![CDATA[
    function ValidateTandCs(source, args)
    {
        args.IsValid = document.getElementById('<%= cbAV.ClientID %>').checked;
    } 
    // ]]>
</script> 

チェックボックス:

<asp:checkbox id="cbAV" runat="server"/>

customvalidator とトグルボタン エクステンダー

<asp:CustomValidator 
     ID="rfvAV" 
     Display="Dynamic" 
     runat="server" 
     ControlToValidate="cbAV" 
     ErrorMessage="RequiredFieldValidator" 
     ClientValidationFunction="ValidateTandCs" 
     onservervalidate="rfvAV_ServerValidate">
</asp:CustomValidator>
<ajaxToolkit:ToggleButtonExtender 
     ID="tbeav" 
     runat="server" 
     TargetControlID="cbAV" 
     ImageHeight="15" 
     ImageWidth="15" 
     CheckedImageUrl="~/images/checkbox-on.gif" 
     UncheckedImageUrl="~/images/checkbox-off.gif" />

customvalidator の背後にあるコード

protected void rfvAV_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = (cbAV.Checked);
}

カスタムバリデータからクライアント側の検証を削除しようとしましたが、サーバーの検証しかありません。うまくいきません

4

2 に答える 2

0

問題が見つかりました。javascript (クライアント側) が IE で動作しなかったことが原因でした。サーバー側の検証は、非常に良好に検証されました。しかし、ウィザード コントロールの終了ボタンをクリックすると、page.isvalid チェックがありませんでした。そのため、無効なバリデータを無視しました。私の悪い。

于 2010-01-12T14:03:59.590 に答える
0

クライアント側とサーバー側の両方で検証ルーチンを使用しているのはなぜですか?

ClientValidateFunction プロパティを削除して、OnServerValidate プロパティを保持してみてください。

于 2009-12-11T16:06:18.217 に答える