2013-10-27 61 views
0

我有一个模型,在那个模型中我有2个可枚举的另一个模型的项目。像这样:带有枚举模型的MVC模型

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添加项目模型(项目)发票看起来像一张桌子。

所以我们有一个表格,其中每行代表添加到发票的项目。最后一行有一个由AvailableItems填充的选择下拉列表,用于在下拉列表中动态地将他们选择的项目添加到表格的底部,就在最后一行选择新项目之前。它还将这些项目添加到模型的Items属性中。除了我不知道如何实现这个目标,甚至不知道从哪里开始提问。

我有一个模拟了什么样的表应该是这样的: enter image description here

任何帮助将不胜感激!

回答

1

在模型方面,你将需要在ItemModel是这样的:

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

否则你就必须映射问题,因为IEnumerable的将不知道如何链接到ItemModel。

但是说实话,我想了一些设计的气味都蹑手蹑脚:

1)AvailableItems的名单附加到发票一件奇怪的事,你确定这不应该是一个单独的表/模型? InvoiceId/AvailableInvoiceId确实应该是必填字段,如果您尝试将两件事物填充到同一个表中,则这是不可能的。

2)主键不能为空!

3)我一般都看到导航属性实现为ICollection <>而不是IEnumerable <> - 您可能会遇到问题。

可以理解,如果这只是一个模型,当然。