0

背景:フォームの作成に使用する CompositeControls のツールセットがあります。コントロール自体は、基本的な検証タスクのいくつかの jquery 検証に関連付けられています。

問題: 開発者が ASP.NET バリデーター (つまり、RegExValidator、RequiredFieldValidator、CustomValidator など) を使用して CompositeControls の 1 つでデータを検証できるようにすることで、これらの CompositeControls の検証をより柔軟にしたいと考えています。

例: 開発者に次のようなことができるようにしてほしい:

<asp:ValidationSummary runat=server HeaderText="There were errors on the page:" />

<custom:TextBox id='SomeTextBox' Label='Enter Name Here:' text='' runat='server' />

<asp:RequiredFieldValidator runat=server ControlToValidate=SomeTextBox ErrorMessage="Name is required."> *
</asp:RequiredFieldValidator>

「ValidationProperty」を複合テキスト ボックスに追加しましたが、RequiredFieldValidator (またはその他のバリデーター) がテキスト ボックスまたはそこからのデータを認識していないようです。テキストボックス (および私が作成した他のすべてのカスタム CompositeControls) は、CompositeControl を継承し、属性「ValidationProperty」をコントロールのデータ要素を公開するパブリック プロパティに設定し、「文字列 ValidationGroup」プロパティも含みます。

質問:複合コントロールが ASP.NET バリデーターとうまく連携するために他に何が必要か、または具体的に何が必要かを知っている人はいますか?

4

1 に答える 1

1

私が最後にこれを調査したのは 2005 年頃ですが、覚えている限りでは、ここには 2 つの別個の問題があります。

  1. クライアント側の検証コードが検証する値を見つける方法
  2. サーバー側の検証が検証する値を見つける方法

ValidationProperty私が間違っていなければ、設定はサーバー側の検証にのみ影響します。まだ行っていない場合は、ポストバック後にサーバー側で IsValidバリデーターのプロパティが設定されているかどうかを確認してください。false

これは変更された可能性がありますが、検証コントロールが同じ名前付けコンテナーを持つコントロールのみを検証できることも事実だったと思います。

クライアント側では、私は少しあいまいですが、検証スクリプトが、探すように指示されたサーバー ID に対応するクライアント ID を持つ要素を探し、valueプロパティを探すという状況が依然としてあると思います。それ。クライアント側で公開していない場合、検証するものを見つけることができません。

時間があれば、バリデーション JavaScript を実行すると非常に役立ちます。これにより、クライアント側の検証が検証対象の値を見つける方法について多くのことを学ぶことができます。

お役に立てれば。

于 2013-03-20T00:12:24.280 に答える