使用 MVC 模型的 C# 最佳实践
本文关键字:最佳 MVC 模型 使用 | 更新日期: 2023-09-27 18:24:13
只是在这里寻找一些关于最佳实践的指导。我有一个产品订单系统的订单清单,如下所示:-
public class CurrentOrderManifestViewModel
{
public int OrderID { get; set; }
public List<CurrentOrderItem> CurrentOrderItems { get; set; }
public decimal? MinimumOrderSurcharge { get; set; }
public decimal? OrderSurcharge { get; set; }
}
public class CurrentOrderItem
{
public int OrderProductID { get; set; }
public string ProductDescription { get; set; }
public string ProductCode { get; set; }
public decimal? UnitPrice { get; set; }
public int Quantity { get; set; }
public decimal? VATRate { get; set; }
public decimal? VATValue { get; set; }
public decimal? GoodsValue { get; set; }
public bool IsOnPromotion { get; set; }
}
我现在处于应用程序的不同区域,与最初创建它的位置不同,我发现自己在相同格式中具有非常相似的属性。但是上面所有与价格有关的字段都不会被填写,因为我纯粹是在看产品名称和描述。
我应该只使用我需要的属性创建一个不同的模型,还是使用相同的模型并在订单项列表中有很多NULL
值?
谢谢!
我现在在应用程序的不同区域,这是 最初是为创建,我发现自己具有非常相似的属性 采用相同的格式。但上面所有与价格有关的领域都是 不会被填满,因为我纯粹在看产品名称和 描述。
DRY原则不是"永远不要写代码两次",而是"每条知识都必须在系统中有一个单一的、明确的、权威的表示"。
仅仅因为应用程序的两个区域具有相似的属性本身并不意味着它们应该共享一个类。 每当企业想要在一个区域添加或修改字段时,它都会影响另一个区域,您必须始终记住这一点。当然,它们现在具有相同的属性,但它们会永远相同吗?
我应该只使用我需要的属性创建一个不同的模型,还是 使用相同的模型,并且在顺序列表中有很多 NULL 值 项目?
根据我对它的理解,我不建议为您的情况使用相同的模型。如果您构建的模型具有有意义的名称,包含它实际具有的属性,并且可以在以后根据需要进行更改,而无需弄清楚它在应用程序中的其他位置使用,这将使您的生活更轻松。 我敢肯定,您还可以找到一个更能代表应用程序此区域的名称。
换句话说,在实际上不是当前订单的项目的地方使用CurrentOrderItem
是一个坏主意。
这是不正确或不正确的。视图模型应具有呈现视图所需的所有信息,情况确实如此。
如果其他属性是两个重属性,则可能需要为此目的创建自定义对象。但是,在这种情况下,属性很简单,这不是问题。
他们关心的是什么?将来维护代码的人清楚地知道这些对象的某些属性不是填充数据,而是保留为空。
显然,如果你创建一个没有这些属性的类,没有人会错误地认为这些变量是设置的。
其他选择是给List
一个非常清晰的名称,并对其进行注释,以便以后有人会理解这一事实,例如:
///<summary>
/// This list includes the order items with all the price properties
/// set to null.
///</summary>
public List<CurrentOrderItem> CurrentOrderItemsWithoutPrices { get; set; }
因此,该决定与编写更多代码(创建一个没有该属性的新类,执行一些映射,手动或自动(或依赖良好的属性命名和注释之间的平衡有关。在这种特殊情况下,我认为视图模型的意图非常明确,一个简单的注释可以使它更加清晰,以便将来的维护,因此您可以节省编写额外的代码(必须维护(。