2012-05-25 12 views
7

私は今、異なるクライアント側MVCフレームワーク(主にバックボーンおよびノックアウト)を試しています。私は検証する方法を考え出しています。私はMVC 4 Web APIを持っているだけのデータを返します。すべてのビューエンジンロジックはクライアント側にあります。明らかに、私は、サーバー側の検証が必須であることを理解しています。これは、DataAnnotationsとモデルバインディングを使用した標準のASP.NET MVC検証で実現します。クライアントサイドMVCフレームワーク(バックボーン、ノックアウトなど)および検証

しかし、私は同様に、クライアント側で現在すべての検証ロジックを複製してしまいました。データを返す方法がありますが、検証ロジックが付いていますか?

答えて

2

いいえ、

あなたがポストを使用したりする方法を取得しますHTTPプロトコルを使用する必要がsererにデータを与えます。これはKey Valueのペアのみを渡すことができます。 MVCデータバインディングを使用すると、これらのキー値ペアをバインドして複雑なオブジェクトを作成できます。

しかし、検証を完了するためにメタデータや関数をC#に転送する方法はありません。

5

Blast-Danは部分的に正しいです。つまり、Key以外のクライアントからサーバーに余分なデータを渡すことはできません。 - 値のペア。あなたは何ができるか

は、しかし、いくつかの検証コードを書き換える必要がないように、クライアントにごDataAnnotationsを伝播しています。複雑なルールでは簡単なことではありませんが、Html.EditorForヘルパーは、jqueryの検証によってシームレスに選択された添付の検証属性を持つ入力用のテキストボックスを生成し、送信するフォームを停止するのに役立ちます。 [必須]、[Range()]、[RegularExpression()]データ注釈について考えてみましょう。

あなたは普通のモデルを作成した場合は簡単な例を参照して、CRUD操作のためのビューを作成するためのウィザードを使用して、Visual Studioでコントローラを追加することができます。 Modelクラスで使用したData Annotationsが出力HTML上でどのようにレンダリングされるのかがわかります。

HtmlHelperを使わずに自分でHTMLを作成している場合は、ノックアウトタグが与えられている可能性があります。this linkからDataAnnotationsModelValidatorProviderとIClientValidatableインターフェイスを確認することができます。

あなたが見ることができるように、これはまだ未知の領域のカントーである:これは控えめなJavaScriptを使用して達成される方法について/

+0

より[検証のためにここに]ブラッド・ウィルソン氏のブログで見つけることができます(http://bradwilson.typepad。 com/blog/2010/10/mvc3-unobtrusive-validation.html)と[ここを挙げる](http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-ajax.html) – leon

+0

ありがとうレスポンス。しかし、私は、サーバーがJSONデータを返すだけのシナリオで作業しています。サーバー側にはビューエンジンロジックが存在しません。私は、クライアントサイドビューエンジン(ハンドルバー、ひげなど)の使用を検討していました。 –

+0

通常、単純な検証(必須フィールド、データ型など)のためにjquery検証プラグインのようなものを使用します。残念ながら、それらはブラウザで再作成する必要がありますが、あなたはそれほど目立たないすべてのものに対処する必要がないので、かなり簡単に見つけることができます。複雑な検証のために、私は通常それらをサーバー上で行い、jsonレスポンスでフィードバックを提供し、テンプレートに表示したり、同じプラグインで検証を使用したりします。合意されたデータ注釈は、サーバー側に行く方法です。 – drogon

関連する問題