SO に関する人々はよく次のように言いViewModel
ます。
myViewModel
が にシリアル化されたクライアントに WebApi 応答として送信される場合JSON
、どのようViewModel
にしてクライアントでメソッドを実行できますか?
これは私にはまったくわかりません。
少なくとも 2 つの方法でビューモデルを理解できます
ビジネス オブジェクトをビュー (MVC Razor ビューなど) に渡す代わりに、このビューに必要なプロパティのみを含む、必要最小限のオブジェクトを渡します。ビューの作成が簡単になり、ビュー デザイナーがデータベースから遅延ロードされるフィールドを使用する場合の問題を回避できます ( Select N+1 の問題などを回避します) 。
クライアント側で使用されるビューモデルを作成できます(Javascriptで)。オブジェクトとしてJavascriptで作成するため、ビューが呼び出すことができるメソッドを含めることができます。あなたが説明しているもの (WebAPI を使用して JSON オブジェクトを送信する) は、そのビューモデルにフィードする単なるデータです。この例については、メインページのこちらのknockoutjsを参照してください。チケット配列を含む TicketsViewModel を確認できます。この例では、viewmodel にハードコードされた 3 種類のチケットを見ることができます。ただし、説明したように、WebAPI から JSON として取得できます。それらをダウンロードしたら、それらをこの配列に入れます。
DTO (データ転送オブジェクト) には、消費可能な形式のデータが含まれています。ViewModel/ActionModel には、View が使用できるようにフォーマットされたデータが含まれています。
DTO は次のようになります。
public class OrderDTO
{
public decimal Price { get; set; }
public int Amount { get; set; }
}
ViewModel は次のようになります。
public class OrderViewModel
{
public decimal Price { get; set; }
public int Amount { get; set; }
public string PriceBackgroundColor { get; set;}
public Uri ImageUri { get; set; }
}