0

私は最近Ajaxを調べました(あなたの専門家を笑ってください)、そして私はすべての追加された機能に興奮しています。しかし、いくつかの懸念があります。

  1. フォームの送信

    Ajaxの例では、jsonオブジェクトは自動的に作成されるか(フォームをシリアル化する)、または各DOMアイテムからval()を取得することによって手動で作成されます。また、データ検証はjavascriptを使用して実行されます。おそらく、Html.EditorFor(およびHtml.TextboxForなど)を使用してフォームを作成できると思います。しかし、モデル/ビューモデルに追加されたDataAnnotation属性を引き続き使用することは可能ですか?私が見たMVC+Ajaxの例では、通常、サーバー側の検証は実行されません。その部分を省略しても大丈夫ですか?今すぐフォームを送信するには、ユーザーがJavaScriptを有効にする必要があるため、問題ないと思います。しかし、私たちはいくつかの専門的な提案が必要です。

  2. モデルを表示

    Ajaxの世界では、ビューモデルは通常JSONオブジェクトとして表現されます。(間違っている場合は訂正してください。)次に、ドメインモデルとビューモデルの間でマッピングするための最良の方法は何ですか?AutoMapperのようなツールはありますか?

    さて、ここに何かを追加する必要があります..........。

    この懸念の理由は、いくつかの例がKnockout.js (そのWebサイトを参照)return Json(model)と呼ばれるものを使用していることを発見したためです。ビューモデルのjsonオブジェクトを呼び出しに返す代わりに$.Ajax、その例はビューモデルがjavascriptで構築されていることを示しています。

    //これは単純な*viewmodel*です-UIのデータと動作を定義するJavaScript
    関数AppViewModel(){
        this.firstName = "Bert";
        this.lastName="バーティントン";
    }
    
    //knockout.jsをアクティブにします
    ko.applyBindings(new AppViewModel());
    

    そのような実践の利点は何ですか?

    ----私の更新の終わり----

役立つ提案をありがとうございます。

4

1 に答える 1

3

1)サーバー側の検証を省略しないでください。MVCには、サーバー側でその一部を実行するための機能が組み込まれていますが、MVCが機能していることをテストすることをお勧めします。通常、これはタイプ、長さ、範囲、およびその他の基本的な検証をテストするだけです。複雑な検証はすべてあなたが行う必要があります。いずれにせよ、ITをテストして、正しい検証が実際に行われていることを確認してください。

2)Jsonは、JavaScriptで動作し、.Netで簡単にシリアル化できるため、最も一般的です。シリアル化ライブラリとしてNewtonsoft.Jsonをお勧めします。ただし、protobuffからXMLまで、解析できる任意の言語を使用できます。

ViewModelは、ビューに送信されるモデルであり、ビューに必要なものであり、通常は一方向にのみビューに送信されます。

ドメインモデルは永続化するオブジェクトであり、通常、クライアントからサーバーへと双方向に移動します。

良い例として、ビューには現在の日付、マネージャーデータ、および従業員データが必要であるため、ビューモデルにはこれらすべてのプロパティが含まれますが、フォームはクライアントから返送されるドメインモデルである従業員のみを編集します。永続化するサーバーに。

MVCには、投稿データを取得して必要なタイプに変換するModelBindersがあります(規則に正しく従っていると仮定します)。ビューモデルをドメインモデルにマップする必要はほとんどありません。

于 2012-05-01T14:16:59.133 に答える