自定义验证到救援!你需要做到以下几点:
- 落实
IValidatableObject
接口
- 落实
IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
- 实现你的逻辑,以确定每个字符串少于100个字符
下面的代码
public class YourModel : IValidatableObject
{
public List<KeyValuePair<int, string>> Authors { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
foreach(KeyValuePair<int, string> myKvp in Authors)
{
if(myKvp.Value.Length >= 100)
{
yield return new ValidationResult("Must be less than 100 characters");
}
}
}
}
这样你就可以打电话给if(Model.IsValid)
在您的控制器操作中,并返回报告的任何错误。如果您KeyValuePair
项指的是一个具体的实体,你甚至可以这样做:
yield return new ValidationResult("Must be less than 100 characters", new string[] { myKvp.Key.ToString() });
你需要对其进行定制,以适应属性的ID在页面上。这样,错误消息可能是特定于您的页面上的输入。
我在许多地方覆盖IValidatableObject
,因为有很多情况下,我做了验证,这取决于我的对象的状态。你的情况有点不同,但从上面的例子可以看出它确实可行。 (但是,所有这些都不在我的头顶,因此可能不完美!)