【发布时间】:2014-10-08 15:31:38
【问题描述】:
我有一个有两个任务的网页 1) 添加新产品 2)在表格中显示现有产品(参见下图)
对于上述每个任务,我也有两个类 用于显示现有详细信息并保存新产品
public class VMProduct
{
public List<Product>ProductList { get; set; }
}
public class Product
{
public String ProductID { get; set; }
public String ProductName { get; set; }
public String Uom1 { get; set; }
public String Uom2 { get; set; }
public String ProductCategoryID { get; set; }
}
我的问题是我可以使用 VMProduct.ProductList 模型显示数据,但是如何使用“产品”模型保存新产品项?
如何在一个视图中同时使用两个模型? 如果我在 VMProduct 模型中使用“产品”模型的属性,它是重复代码吗?
任何人都可以为此提供解决方案吗? 在此先感谢
【问题讨论】:
-
简单。只需创建另一个具有 Product 和 VMProduct 属性的类。之后,您可以将该类提供给视图。
-
就您关于代码重复的观点而言,您必须在单一职责 (SRP) 与 DRY 之间取得平衡。更新工作单元请求模型(例如:
AddProductRequest)和响应模型(例如:ProductResults,这是一个List<ProductResult>)都可以很好地添加到传递给页面的单个视图模型中.控制器操作会将AddProductRequest作为参数,将其发送到数据库,然后将其重新选择为ProductgResult,并通过 ViewModel 将其返回给视图。属性将被复制,但它们的功能不会。
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4