小编Sat*_*ish的帖子

自定义验证属性在同一字段上多次

如何在同一字段上多次使用相同的自定义验证属性,或者只是为服务器端和客户端验证启用AllowMultiple = true?

我有以下自定义验证属性:

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, 
        AllowMultiple = true, Inherited = true)]
public class RequiredIfAttribute : ValidationAttribute,IClientValidatable
{
    public RequiredIfAttribute(string dependentProperties, 
     string dependentValues = "",
     string requiredValue = "val")
     {
     }
}
Run Code Online (Sandbox Code Playgroud)

在dependentProperties中,我可以指定由逗号分隔的多个依赖属性,在dependentValues中,我可以指定依赖属性验证应该处理哪些值,最后在requiredValue中,我可以指定要验证的字段的期望值.

在我的模型中有两个属性LandMark,PinCode和我想使用验证如下:

public string LandMark { get; set; }
[RequiredIf("LandMark","XYZ","500500")]
[RequiredIf("LandMark", "ABC", "500505")]
public string PinCode { get; set; }
Run Code Online (Sandbox Code Playgroud)

这里的值只是例如,因为似乎我可以多次添加属性并且不会出现任何编译错误,我已经在属性中实现了TypeID,如果我从中删除客户端验证,它在服务器端运行良好.但是当我在属性上实现IClientValidatable时,它给了我一个错误:

"不引人注目的客户端验证规则中的验证类型名称必须是唯一的."

任何帮助我该如何解决?

c# jquery-validate data-annotations asp.net-mvc-3

5
推荐指数
2
解决办法
1万
查看次数