我在ASP MVC中成功添加了自定义客户端验证,部分归功于this tutorial。当您只需要一次验证一个对象时,不引人注目的系统就可以正常工作。
现在我需要对集合类型执行验证以检查整个集合的属性。我觉得这应该是可能的,但是根本不能找到如何做到这一点的文档。对于初学者,哪个HTML元素负责跟踪数据属性?
示例代码
public class Model {
[ListNotEmpty]
public IEnumerable<Submodel> Submodels { get; set; }
}
public class Submodel {
public bool Selected { get; set; }
}
public class ListNotEmptyAttribute : ValidationAttribute, IClientValidatable {
public override bool IsValid(object value) {
return ((IEnumerable<Model>) value).Any(m => m.Selected);
}
// FormatErrorMessage() elided
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(
ModelMetadata metadata, ControllerContext context) {
yield return new ModelClientValidationRule {
ErrorMessage = "You must select at least one!",
ValidationType = "listnotempty",
};
}
}
使用此代码,验证在服务器端发生没有问题,但根本没有创建客户端验证属性。也没有任何错误消息。
我可以放弃DataAnnotations框架,只是滚动我自己的Jquery验证,但在其他情况下DataAnnotations对我来说效果很好。
有人可以告诉我吗? ASP MVC是否可以进行这种验证?