【问题标题】:validation on IList property dataannotations验证 IList 属性数据注释
【发布时间】:2011-08-08 03:00:59
【问题描述】:

我有类似订单表格的场景,其中一个订单可以有多个订单行。我在 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 属性强制一个产品在一个订单中只能出现一次我的问题是

  1. 是否有针对此问题的现成解决方案
  2. 如果我必须自己动手 验证属性我怎么能
    把它挂在客户端应该在哪里 显示错误消息(与 属性或在验证摘要中)。 如果我可以附上它
    非常棒的房产

目前我们正在使用 mvc2,但我们正计划升级,因此任何使用 mvc3 的答案都同样好。
谢谢

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3 data-annotations


    【解决方案1】:

    这有点切题,但我认为验证不是这里的正确方法。为什么不让你的模型看起来像这样:

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

    然后,如果您的用户将现有产品添加到订单中,只需显示当前数量并提供增加数量的选项即可。这样,您就可以引导用户正确使用您的界面,而不是让他们犯错,然后用验证消息惩罚他们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2018-06-29
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多