0

モデルがあり、そのモデルには別のモデルの列挙可能なアイテムが 2 つあります。そのようです:

public class InvoiceModel
{
    public int? InvoiceId { get; set; }
    public IEnumerable<ItemModel> Items { get; set; }
    public IEnumerable<ItemModel> AvailableItems { get; set; )
    public decimal? SubTotal { get; set; }
    public decimal? Discounts { get; set; }
    public decimal? Taxes { get; set; }
    public decimal? Total { get; set; }
}

ItemModel は次のようになります。

public class ItemModel
{
    public int? Id { get; set; }
    public decimal? Amount { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal? UnitCost { get; set; }
    public int? Quantity { get; set; }
}

ビューで、ユーザーは請求書を作成し、テーブルのようなビューで AvailableItems に基づいてアイテム モデル (Items) を請求書に追加しています。

これで、各行が請求書に追加されたアイテムを表すテーブルができました。最後の行には、AvailableItems によって設定された選択用のドロップダウン リストがあり、ドロップダウン リストから選択した項目を、新しい項目の選択がある最後の行の直前にテーブルの一番下に動的に追加します。また、アイテムをモデルの Items プロパティに追加します。これを達成する方法や、どこから質問を始めればよいのかわからないことを除いて。

テーブルがどのように見えるかのモックアップがあります: ここに画像の説明を入力

どんな助けでも大歓迎です!

4

1 に答える 1

1

モデル側では、ItemModel で次のようなものが必要になります。

 public int? InvoiceId { get; set; }
 public int? AvailableInvoiceId { get; set; }

または、IEnumerable が ItemModel へのリンク方法を認識しないため、マッピングの問題が発生します。

ただし、正直なところ、いくつかのデザインの匂いが忍び込んでいると思います。

1) AvailableItems のリストを請求書に添付するのは興味深いことですが、これを別のテーブル/モデルにするべきではありませんか? InvoiceId/AvailableInvoiceId は実際には必須フィールドである必要がありますが、同じテーブルに 2 つのものを詰め込もうとすると、これは不可能になります。

2) 主キーは null 可能であってはなりません!

3) 通常、IEnumerable<> ではなく ICollection<> として実装されたナビゲーション プロパティを見てきました。これには問題があるかもしれません。

もちろん、これが単なるモックアップであれば理解できます。

于 2013-10-27T21:31:30.527 に答える