2011-04-18 116 views
0

我有訂單的形式,其中一個訂單可以有多個OrderLines。我在asp.net的MVC(主從表單)我的視圖模型看起來單頁,在實施這個喜歡對IList屬性dataannotations驗證

公共類訂單

{ 
    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屬性執行一個產品可能只出現一次中一個爲了我的問題是

  1. 有一些開箱即用的解決這個問題
  2. 如果我要推出自己的 驗證
  3. 的屬性我怎麼能
    將它掛在客戶端應在其中顯示錯誤消息 (使用 屬性或驗證摘要)。 如果我能有它附有
    屬性,將是真正偉大

目前我們對MVC2但我們正計劃升級所以用MVC3任何回答也同樣不錯。
謝謝

回答

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;} 
} 

然後,如果您的用戶將現有的產品訂單,只是目前的電流量,並提供選項遞增它。這樣,您就可以引導用戶正確使用您的界面,而不是讓他們犯錯,然後用驗證消息來懲罰他們。