モデルを更新できるASP.NET MVCアプリケーションを開発する場合、更新されたビューモデルを取得し、現在更新されているモデルに戻す方法を知る方法が必要です。これを行うにはいくつかの異なる方法があるようで、これらのいずれかが適切なMVCではないのではないかと思っています(モデルにあるはずのデータをコントローラーに保存させるのは適切なMVCではありません)?
すべてのビューモデルにはIDがあります:長所
- モデルと一致できることを常に確認してください。
短所
- IDが変更されないように注意する必要があります。それ以外の場合は、ユーザーにアクセスを許可しない行を更新させることができます。
最低限のビューモデルのみにIDがあります:長所
- ユーザーがアクセスしてはならないデータを更新しないようにするために必要なチェックがはるかに少なくなります。
短所
- どのビューモデルがどのモデルと一致するかを追跡するのははるかに困難です。
- ユーザーがアクセスできないデータを更新していないことを確認するには、IDを持ついくつかのビューモデルを確認する必要があります。
IDを持つビューモデルはありません:
長所
- 更新のIDを確認する必要はありません。
短所
- あなたは無国籍を放棄しなければなりません。
そこで、2つの質問があります。
まず、正しい/間違った選択肢がありますか?(そうでない場合、選択は意見の問題であり、私の2番目の質問は意見に基づいているため、無視する必要があります。)
第二に、正しい/間違った選択がある場合、それはどれですか?
コメントを明確にするために、データベースオブジェクトを模倣したビューモデルがある場合に話しています。
これを考えてください:
public class InvoiceViewModel  //Does not have ID, does not relate to model.
{
    public CustomerViewModel CustomerVM { get; set; }  //Maybe has ID?  Does relate to model.
    public AddressViewModel BillingAddressVM { get; set; } //Ditto
    public AddressViewModel ShippingAddressVM { get; set; } //Ditto
    public List<InvoiceLineItemViewModel> ItemVMs { get; set; }  //Each one has an ID?
}
これではない:
public class InvoiceViewModel
{
    public Customer Customer { get; set; }
    public Address BillingAddress { get; set; }
    public Address ShippingAddress { get; set; }
    public List<InvoiceLineItem> Items { get; set; }
}
You have to abandon statelessness.-MVCを無意味に使用することを選択しました。