2009-07-22 11 views
0

[OK]を私は使用しているコントロールに大きな問題があります。ダイナミックコントロールのバリデーション

私がやってるサイトは(馬は!?神のためににおける対策でなければならないことを決めた人)彼らのチェックアウトの一部のフィールドにカスタム単位を使用して、我々はユニットに基づいて検証できるようにする必要がありますすなわち、彼らは200〜900cmの15〜40針(または何か)を持つことができます(これらの数字は完全にランダムです)。

通常、これはサーバーサイド検証を使用して検証され、現在のユニットを処理し、入力を適切に変換し、動的制限と比較することができます。

残念ながら、これらのコントロールはページの読み込み時にページに動的にレンダリングされているため、サーバー側の検証はポストバック時に技術的に存在しないため起動しません。

私がこれを避けるためにやっているのは、標準の正規表現バリデーターに似ていますが、コードを隠すためにハッキングされています(私は書きませんでしたが、動作するようです)。

これはページにありません。したがって、関連するドロップダウンから正しい単位を取得するには、HttpContextなどの方法でページオブジェクトにアクセスする必要があります。コントロールを検証するより良い方法はありますか?

ああ、はい、これは信じられないほど畳み込まれており、ランダムです。

乾杯、エド

+0

女王はいつか馬を検査していたときに彼女に測定テープがないと思った。 –

+0

あなたはページ、onloadについて話します。それはASPですか?より正確に=) –

+0

多分私の最後のコメントは民間伝承だったかもしれませんが、クレメントにはポイントがあります。このサーバー側を検証する場合は、フォームまたはクエリ文字列の値を読み込んで、有効であることを確認するだけです。あなたがフィールドの検証基準を持っている場合、または基準が何であるべきかを伝える何らかの方法があれば、ユニットは本当に重要ではありません。 –

答えて

3

作るためにいくつかのポイントがここにあります:まず、あなたが動的に生成されるポストバックオフのコントロールを得ることができ、限り、あなたが一貫IDでそれらを再生成するとの開始時に各ポストバックイベントは、それらを再作成した後、ASP.NETはViewStateとそれ以外のものを再接続し、その後、コールバックメソッドをトリガーします。

次の点では、ASP.NET ajaxフレームワークを使用して、いくつかのjavascriptを使用してページクラスの静的メソッドを呼び出すことができます(本質的にミニWebサービスになります)。チェックアウトthisのリンクを参照してください。これにより、サーバー側でvalidateメソッドを呼び出すjavascriptを書くことができます。しかし、あなたはクライアント側のコードから必要なすべてのデータを渡す必要があるので、静的なものです。

最後に、ユニットごとに1つずつ、複数の正規表現バリデーターを持つことができます。その後、ユニットフィールドのonchangedイベントでjavascriptを使用して正しいものを有効/無効にすることができます。私は自分でそれをやっていないが、私はあなたが簡単にjavascriptを介してバリデータをオフにすることができると信じています。 (チェックアウトthisリンク)

+0

複数のバリデーターについて考えてみましょう。私はSOがバグを止めて、私がtick = Dをクリックすると答えを受け入れます –

関連する問題