2

MVC4でWebAPIを使用する前、およびjsRenderがベータ版になる前に、サーバー側プログラミングを使用してフォームを生成します。つまり、ビューモデルにデータ注釈を追加してから、多くの@Html.EditorForとを含むフォームを生成し@Html.LabelForます。(MVCプログラマーの場合は、私が何を意味するかを知っています。)次に、jQuery検証は、クライアント側でデータ検証を行うのに役立ち、DataAnnotation属性は、をチェックすることでサーバー側で仕事をしますModel.IsValid。すべて順調。

今、私たちは持っていWebAPIます。ほとんどの例は、Javascriptを使用してWebAPI、サーバーとクライアント間でフォームデータ(主にjson)を転送するアクションにAjaxを呼び出すことです。jsRender(または他のタイプのテンプレートライブラリ)を使用してデータを表示します。

不要なフルページレンダリングを回避するためにAjax呼び出しを行うというアイデアが好きです。ただし、主な難しさは、フォームがクライアント側のデータにバインドするテンプレートとして準備されるため、DataAnnotationなどのサーバー側の手法をjQuery検証と組み合わせる方法がないことです。また、を使用してテンプレートを生成することはできません@Html.EditorFor。以前MVC3で持っていた多くの大きなメリットを失っているようです。

では、専門家はこれをどのように処理しますか?サーバー側の手法を完全にダンプし、クライアント側で使用するためにテンプレートにすべてを書き出すだけですか?

クライアント側ですべてを実行できる場合、jQuery検証をどのように利用できますか?data-val-xxxこれらのタグを手動で追加しますか?

提案ありがとうございます。

4

2 に答える 2

1

ASP.NET MVCに対してAJAXアプローチを採用しても、ASP.NET検証機能の使用が除外されるわけではありません。ただし、これらのシナリオに対処するには、独自のサーバー側およびクライアント側のアーキテクチャを作成する必要があります。基本的に、WebAPIが任意のメソッドの検証メッセージをスローできるようにする必要があります。さらに、クライアント側のJavaScriptがこれらのメッセージをいつでも処理できるようにする必要があります。

私が現在開発しているASP.NETMVC+ Knockoutアプリケーションでは、まさにそれを行っています。これには以下が含まれます。

  • サーバー側ActionFilterAttributeモデル検証エラーをJSONに変換するカスタム
  • クライアント側。検証エラーを解釈するためのJavaScriptのトリック。

サーバーに対してREST呼び出しを行うたびに、戻り時にHTTPステータスコードを確認します。200成功を意味し、アプリケーションは通常どおり続行されます。400Bad Requestを意味します。これは、1つ以上の検証メッセージが返されたことを意味します。

の場合400、応答の本文には、すべての検証メッセージを含むJSON配列が含まれます。これらのメッセージは、入力要素の名前とエラーメッセージで構成される単純なタプルです。

data-val-server設定されている入力要素を常に無効にする新しい属性を追加しました。サーバーから取得したデータは、属性を配置する要素を教えてくれます。属性の値は、サーバーからも送信されるエラーメッセージです。その後、フォームを解析し、フォームを無効にして適切なメッセージを表示するクライアント側の検証を開始するだけです。

于 2012-08-13T18:46:04.940 に答える
0

@Martin Devillers 誰かがここでやった: http://sixgun.wordpress.com/2012/03/28/asp-net-web-api-validation-with-data-annotations/

于 2012-08-27T16:09:23.243 に答える