我有订单表单的情况,其中一个订单可以有多个OrderLines。我在asp.net mvc(主要详细信息表单)的单页上实现这个我的视图模型看起来像
公共类订单
{
public int OrderID{get;set;}
public int CustomerID{get;set;}
public DateTime OrderDate{get;set;}
public string ShippingAddress{get;set;}
[ProductUnique(ErrorMessage = "Product must be unique in an order")]
public IList<OrderLineItem> ProductLines{get;set;}
}
public class OrderLineItem
{
public int OrderLineItemID{get;set;}
public int ProductID{get;set;}
public int Quantity{get;set;}
}
我希望ProductUnique属性强制执行一个产品只能在一个订单中出现一次我的问题
目前我们正在使用mvc2,但我们正计划升级,所以mvc3的任何答案都同样好。
感谢
答案 0 :(得分:0)
这有点切,但我认为验证不是正确的方法。为什么不让你的模型看起来像这样:
public class Order
{
public int OrderID{get;set;}
public int CustomerID{get;set;}
public DateTime OrderDate{get;set;}
public string ShippingAddress{get;set;}
public IDictionary<int, int> ProductQuantities{get;set;}
}
然后,如果您的用户将现有产品添加到订单,只需显示当前数量并提供增量选项。通过这种方式,您可以引导用户正确使用您的界面,而不是让他们犯错,然后用验证消息惩罚他们。