0

顧客を参照する注文がある場合、モデルには顧客の ID が含まれていますか、または値オブジェクトのような顧客オブジェクトのコピーが含まれていますか (DDD を考えてください)。

私はこれをしたいと思います:

public class Order {
    public int ID {get;set;}
    public Customer customer {get;set;}
    ...
}

今私はこれを行います:

public class Order {
    public int ID {get;set;}
    public int customerID {get;set;}
    ...
}

フォームに渡されるビュー モデルに ID を含めるよりも、顧客オブジェクト全体を含める方が便利です。それ以外の場合は、注文が ID で参照するビューにベンダー情報を取得する方法を理解する必要があります。

これは、保存を呼び出すときに (最初のオプションを選択した場合)、注文オブジェクト内で見つけた顧客オブジェクトの処理方法をリポジトリが理解していることも意味します。2 番目のオプションを選択した場合は、ビュー モデル内のどこに配置するかを知る必要があります。

彼らが既存の顧客を選択することは確実です。ただし、表示フォーム上でその場で情報を変更したい場合もあります。コントローラーが顧客オブジェクトを抽出し、顧客の変更を個別にリポジトリに送信してから、注文に変更を送信し、顧客 ID を注文に保持するように主張することができます。

4

1 に答える 1

3

次のモデルがある場合:

public class Order {
    public int ID {get;set;}
    public Customer Customer {get;set;}
    public object OrderProperty {get;set;}
    ...
}

および次のビュー (からViewPage<Order>)

あなたはあなたの見解で行うことができます

Html.TextBoxFor(m=>m.OrderProperty);

だけでなく、

Html.HiddenFor(m=>m.Customer.Id)
Html.TextBoxFor(m=>m.Customer.Name)

コントローラーでは、自動的にバインドされます

public ActionResult SomeAction(Order order)
{
    // order.OrderProperty will be bound
    // order.Customer.Id will be bound
    // order.Customer.Name will be bound
}
于 2010-06-03T19:25:08.343 に答える