3

残念ながらコードをお見せできないので、問題を説明するだけです。

更新パネルに詳細ビューがあります。ラジオ ボタン A が選択されている場合に条件を開いて表示されるカスタム バリデータを追加しました。テキスト ボックス A には値が必要です。

これをチェックする OnServerValidate メソッドをセットアップし、失敗した場合は args.Valid を false に設定します。

ただし、私のエラーメッセージは表示されません。IE 開発者ツールを見ると、ハードコードされたメッセージを含む顧客バリデーターが表示されますが、非表示になっています (可視性: 非表示)。

customvalidator を見つけて表示を強制しようとしましたが、customValidator.Style.Remove("visibility") でそれを削除しようとしましたが、何も機能しませんでした。メッセージは常に隠されています。

その条件が満たされているかのように、ページは検証に失敗します。私のページは保存されません。カスタムバリデーターで設定したメッセージが表示されないだけです。

編集

Visible="true"カスタムバリデータのaspxコードでも試してみましたが、エラーメッセージは表示されず、開発者ツールキットでは非表示として表示されます。

4

2 に答える 2

0

ここでも同じ問題。バリデーターのスタイル属性を変更したり、Javascript を使用してスタイルを変更したり、Jquery などを使用したりして、すべてを試しました。何も機能せず、そのスタイルは常に「visibility:hidden」でした。

最終的に、エラー メッセージにラベルを追加するだけで、最もばかげた回避策を実行することになりました。

<asp:Label ID="ErrorLabel" runat="server" Visible="False" CssClass="validator-red">
    Error message here
</asp:Label>

検証イベントハンドラーで手動で表示します。

protected void Validator_ServerValidate(object source, ServerValidateEventArgs args) {
    // Validation code, set args.IsValid here.

    ErrorLabel.Visible = !args.IsValid;
}

これは、すべてのバリデーターに含まれることを意図した機能ですが、MS がこれに詰め込んだようです。少なくともこれは確実に機能します。また、必要ないので、バリデーターを設定することを忘れないでくださいDisplay="None"

于 2014-10-29T05:33:14.770 に答える
-1

私は自分で同様の問題に遭遇し、答えを見つける直前にこのスレッドを見つけました...それでも価値があるかどうかはわかりませんが、これが私がしたことです.

1) 以下を追加しました (VB.net コードですが、C# に移植できるはずです)。

My_Custom_Validator.Attributes.Add("class", "invalid")

2) CSS の無効なクラス ルールを作成しました。

.invalid {display:  block !important;  visibility:  visible !important;}

!important は、.NET コードによって作成されたインライン CSS をオーバーライドします。ディスプレイに設定する: ブロック; 必須ではありませんが、念のため入れておきます。

これは、なぜ可視性が隠されているのかというあなたの質問には答えません。インライン CSS が表示されます...これは単なる回避策です。

于 2012-08-28T19:30:24.187 に答える