0

MVCのモデルバインダーは、投稿された値を階層を含むビューモデルオブジェクトにバインドできますか?

Customer、Order、およびOrde​​rItemテーブルがあります。OrderItem.OrderIDはOrder.IDを指します。Order.CustomerIDは、Customer.ID、つまり共通のCustomer->Order->OrderItemセットアップを指します。

そして、私はビューモデルを持っています– Orderオブジェクトを含み、次にOrderItemオブジェクトも含むCustomer。

VSのデザイナーツールを使用してEFモデルオブジェクトを作成しました。(最初にSQLでデータベーステーブルを作成し、次にEFツールを使用してクラスを自動的に作成しました)

たとえば、1つのページ(ビュー)で、ユーザーが新しい顧客レコード、注文、およびいくつかのOrderItemを作成できるようにします。

ユーザーがフォームに入力したら(この1つのビューに新しい顧客、注文、注文アイテムを作成します)、送信ボタンをクリックします。デフォルトのバインダーは、投稿された値からビューモデルにすべての値を移動しますか?(ビューモデルクラスは、階層内のCustomer、Order、OrderItemのプロパティを保持します。つまり、OrderはCustomer内のプロパティであり、OrderItemはOrder内のプロパティです)。EFは、投稿された値をそのようなオブジェクトにマップするのに十分スマートですか?

4

1 に答える 1

0

はい、MVC はこのバインドを処理するのに十分スマートです。MVC では、それ自体がモデルであるいくつかのプロパティで構成される「複雑な」ビュー モデルを構築することはかなり一般的です。コレクションと辞書へのバインドはより困難ですが、完全に可能です。

EF では、オブジェクト間の関係を簡単に定義でき (たとえば、Customer と Order の間に 1 対多の関係があります)、EF はこれを適切に処理します。「注文と注文アイテムで顧客を作成する」のコードはかなり簡単だと思いますが、私はEFの専門家ではありません.

ただし、「Edit Customer and/or Order and/or Items」画面の EF コードは、実際には非常に複雑になるため、コードを大幅に簡素化するため、これらを個別のアクションに分割することをお勧めします。 .

于 2012-05-22T21:50:44.463 に答える