验证 IList 属性数据注释
Posted
技术标签:
【中文标题】验证 IList 属性数据注释【英文标题】:validation on IList property dataannotations 【发布时间】:2011-08-08 03:00:59 【问题描述】:我有类似订单表格的场景,其中一个订单可以有多个订单行。我在 asp.net mvc(主详细信息表单)的单个页面上实现这个我的视图模型看起来像
公开课秩序
public int OrderIDget;set;
public int CustomerIDget;set;
public DateTime OrderDateget;set;
public string ShippingAddressget;set;
[ProductUnique(ErrorMessage = "Product must be unique in an order")]
public IList<OrderLineItem> ProductLinesget;set;
public class OrderLineItem
public int OrderLineItemIDget;set;
public int ProductIDget;set;
public int Quantityget;set;
我希望 ProductUnique 属性强制一个产品在一个订单中只能出现一次我的问题是
-
是否有针对此问题的现成解决方案
如果我必须自己动手
验证属性我怎么能
把它挂在客户端应该在哪里
显示错误消息(与
属性或在验证摘要中)。
如果我可以附上它
非常棒的房产
目前我们正在使用 mvc2,但我们正计划升级,因此任何使用 mvc3 的答案都同样好。 谢谢
【问题讨论】:
【参考方案1】:这有点切题,但我认为验证不是这里的正确方法。为什么不让你的模型看起来像这样:
public class Order
public int OrderIDget;set;
public int CustomerIDget;set;
public DateTime OrderDateget;set;
public string ShippingAddressget;set;
public IDictionary<int, int> ProductQuantitiesget;set;
然后,如果您的用户将现有产品添加到订单中,只需显示当前数量并提供增加数量的选项即可。这样,您就可以引导用户正确使用您的界面,而不是让他们犯错,然后用验证消息惩罚他们。
【讨论】:
以上是关于验证 IList 属性数据注释的主要内容,如果未能解决你的问题,请参考以下文章