2009-10-17 9 views
9

私はASP.NET MVC 2の検証が機能していない理由を追跡しようとしていますが、これを行うにはどのように動作するのか十分にわかりません。ASP.NET MVC 2の検証は実際にどのように機能しますか?

私はこのuseful article by David Haydenの手順を踏襲していますが、現時点では最高のドキュメントですが、実際には何も起こりません。

(私のモデルにデータアノテーションを追加したときにプレビュー1から行ったように)私がサーバーにサブミットしたときに検証されますが、クライアント側の検証は行われません。

どうすればテストすることができますか?これまでのところ私は、私が何であるかを簡単に確認カント

  • MicrosoftMvcJQueryValidation.jsとjquery.validate.min.jsファイルが
  • Html.ClientValidationEnabled =真

をダウンロードされている以下の明白な事を確認しましたどのイベントに接続してどのようにデバッグするかを知ることができます。

答えて

3

フィールドをクライアント側で検証するには、フィールド内でHtml.ValidationMessage/Html.ValidationMessageFor <>の呼び出しを指定する必要があります(Davidがリンクしたチュートリアルで行ったように)。これは、基本的に、そのフィールドの検証を実行するクライアント側の検証ロジックに対するトリガーです。

フィールドごとに(つまりHtml.ValidationMessageを使用して)実際に検証メッセージを表示しないようにしたいが、要約を唯一の検証エラーメッセージのソースとすることができる状況がある場合Html.ValidationSummaryを使用して)、あなたはそれでも必要とする特定のフィールドに対してバリデーションを「トリガー」する何らかの方法が必要です。これは、ビュー内でHtml.Validate/Html.ValidateFor <のメソッドを使用することで実現できます。これらのヘルパーは何もレンダリングしませんが、クライアント側の検証のために指定されたフィールドを登録するだけです。

モデルオブジェクトのすべてのプロパティが自動的に検証されるようにクライアント側の検証を行いたくない場合があるため、これらの要件は両方とも必要です。その一部は、検証するフォームの一部でない場合もあるからです。

10

は、ここで私が学んだことです:

最も重要

  • あなたのHTMLフォームを使用してディレクティブだけでなく、BeginFormとENDFORMで作成する必要があります。
  • あなたは「フォーム」を開始する前に、あなたは、各フィールド
  • ためHtml.ValidationMessageを使用する必要がありますが、各部分コントロール(ASCX)
  • にHtml.ClientValidationEnabled = trueを設定しなければなりません
  • をHtml.ClientValidationEnabled = trueに設定する必要がありますITは(非常に簡単な概要)

    • あなたがHTMLを行うしくみ

    。それはViewContextで「FormContext」を作成し、BeginForm

  • ValidationMessageヘルパーが使用される場合、メタデータはフォームが(usingステートメントで)配置されているフォームのコンテキスト
  • に入れて、それはすべての検証コードを書き出し

MISC

  • そのコントロールがフォームを定義するビューから別のモデルを使用している場合、私は、私は部分的に制御しているとき、検証作業を取得するように見えることはできません。

  • あなたはHtml.TextBoxForまたはHtml.ValidationMessageForを使用する必要はありません、あなたは使用することができますHtml.TextBoxとHtml.ValidationMessage

関連する問題