使用 DataAnnotations 进行 MVC 模型验证——有什么方法可以使 ICollection 成为必需的吗?
我在 Model 类中有一个属性,类似于:
/// <summary>
/// A list of line items in the receipt
/// </summary>
public ICollection<ReceiptItem> Items { get; set; }
有什么方法可以标记此属性来验证集合必须有 1 个或多个成员吗?我试图避免在 ModelState.IsValid 之外进行手动验证函数调用
I have a property in a Model class something like:
/// <summary>
/// A list of line items in the receipt
/// </summary>
public ICollection<ReceiptItem> Items { get; set; }
Is there any way I can mark up this property to validate that the collection must have 1 or more members? I am trying to avoid a manual validation function call outside of ModelState.IsValid
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我最终通过使用自定义 DataAnnotation 解决了这个问题——没想到首先可以这样做!
这是我的代码,如果对其他人有帮助的话!
I ended up solving the problem by using a custom DataAnnotation -- did not think to see if this could be done first!
Here is my code if it helps anyone else!
在模型类中实现 IValidatableObject 接口,并在 Validate 方法中添加自定义验证逻辑。
Implement
IValidatableObject
interface in your model class and add the custom validation logic inValidate
method.借助 EF4 CodeFirst (EntityFramework.dll),您现在可以在数组/列表/集合上使用 MinLengthAttribute 和 MaxLengthAttribute。
描述:指定属性中允许的数组/字符串数据的最小长度。
With the EF4 CodeFirst (EntityFramework.dll), you now have MinLengthAttribute and MaxLengthAttribute that you can use on array/list/collection.
Description: Specifies the minimum length of array/string data allowed in a property.
实现此目的的最简单方法是在数据模型或 DTO 中使用 MinLength DataAnnotation
The simplest way to achieve this is to use the MinLength DataAnnotation in your Data Model or DTOs