2011-12-06 4 views
14

Htmlフォームは、Knockout JSとjQueryテンプレートを使用して制御されます。 フィールドを検証するために、基本的なjQuery検証が使用されています。 フォームはJSONにシリアル化され、AJAXを使用してMVCコントローラアクションに送信されます。 MVCコントローラアクションは、サーバー側モデルの検証を実行し、ModelStateにエラーを追加します。 ModelStateのエラーを反復し、JSON応答でエラーのキー/値のコレクションに追加する -ノックアウトJS + MVC +サーバーサイドモデルバリデーションを使用してエラーを表示しますか?

  1. クライアントにこれらのエラーを返すためのベストプラクティスは何ですか?

  2. どのようにエラーをクライアントに表示しますか?エラーのキー/値のコレクションをモデルの関連フィールドにどのようにバインドしますか?

モデルに「名前」フィールドがあり、対応するテキストボックスがjQueryテンプレートによってレンダリングされているとします。エラーコレクションの "name"フィールドでエラーをどのように受け取り、 "name"テキストボックスの下にエラーメッセージを表示しますか?

答えて

5

ko.jsあなたを助けることができる(found here)のための2つの検証プラグイン、

Knock-Knock validation

Knockout Validation

あなたは、クライアント側に注入MVC​​ unobstrsive検証データにそれらの1を配線することができますがあります。

+10

2番目のオプション(ノックアウト検証)を見て、MVCビューモデルの検証属性をKnockoutの.extend()メソッドにどのようにマップできるのだろうかと思っていましたか? – Ryan

4

MVCを使用している場合、控えめなjavascriptは、モデルで設定された検証に基づいてクライアント側の検証を実行します。追加の設定を行う必要はありません。

これは、javascriptとknockoutjsを使用してモデルに基づいてクライアント側の検証を行う直接的な方法はないと言っています。

クライアント側ではいくつかの方法があります。

  1. Jqueryまたはその他の検証フレームワークで検証を実行できます。しかし、あなたはタグを持つ必要があります。このアプローチの利点は、コードが単純で維持しやすいことです。
  2. クライアントサイドのカスタム検証をjavascriptを使用して実行し、検証メッセージをknockoutを使用してバインドすることができます。これには、入力変数ごとにエラーラベルを作成する必要があります。この方法の利点は、表示方法と表示内容を完全に制御できることです。

個人的には、最近のプロジェクトの1つに似た要件がありましたが、カスタム検証チェックとエラーラベルを使用してこれを達成しました。

関連する問題