7

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

ただし、クライアント側でもすべての検証ロジックを複製することになりました。データを返す方法はありますが、検証ロジックが添付されていますか?

4

2 に答える 2

5

Blast-Danは部分的に正しいです。つまり、キーと値のペアを除いて、クライアントからサーバーに余分なデータを渡すことはできません。

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

通常のモデルを作成し、ウィザードを使用してVisual Studioにコントローラーを追加し、CRUD操作のビューを作成すると、簡単な例を見ることができます。Modelクラスで使用したデータアノテーションが最終的に出力htmlにレンダリングされる方法がわかります。

HtmlHelperを使用せずに自分でHTMLを作成している場合(ノックアウトタグが与えられていると思います)、このリンクから始まるDataAnnotationsModelValidatorProviderおよびIClientValidatableインターフェイスを確認することをお勧めします。

ご覧のとおり、これはまだ未知の領域です:/

于 2012-05-26T03:08:16.100 に答える
2

いいえ、

サーバーにデータを渡すときは、Post または Get メソッドを使用する HTTP プロトコルを使用する必要があります。これはキーと値のペアのみを渡すことができます。MVC データ バインディングを使用すると、これらのキーと値のペアをバインドして複雑なオブジェクトを作成できます。

ただし、検証を完了するためにメタデータまたは関数を C# に転送する方法はありません。適切な検証を行うには、すべての検証ロジックをサーバー側とクライアント側のスクリプト言語の両方で記述する必要があります。

于 2012-05-25T19:58:11.110 に答える