因为下拉框不支持验证,所以写一个attribute特性,让它继承ValidationAttribute
mvc的特性验证,很直接,无论是数据安全特性上还是页面表现上都不错,
它的运行机制: 前台表单验证规则有个名称,然后前台js有对这个规则编写的代码,用来控制前台html标记的显示,而后台主要是生成验证规则和向前台参数赋值的,
mvc的验证不是简单的后台验证,一般继承到了 jquery.validate.min.js里

 

第一步 写后台验证规则,可能需要这样

 

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
    public sealed class NotDefaultValueAttribute : ValidationAttribute, IClientValidatable
    {
        public string InputString { get; set; }
        public NotDefaultValueAttribute()
        {
            ErrorMessage = "请选其中一项";
        }
        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            ModelClientValidationRule rule = new ModelClientValidationRule
            {
                ValidationType = "notdefaultvalue",
                ErrorMessage = FormatErrorMessage(metadata.GetDisplayName())
            };
            rule.ValidationParameters["inputstring"] = InputString;

            yield return rule;//按需取值
        }
        public override bool IsValid(object value)
        {
            if (value == null)
                return true;
            string inputString = (string)value;
            if (inputString.Contains(InputString))
            {
                return false;
            }
            return true;
        }
    }
View Code

相关文章:

  • 2021-10-12
  • 2022-02-01
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-23
  • 2021-05-25
  • 2021-05-20
  • 2022-02-02
  • 2022-01-07
  • 2022-12-23
  • 2021-10-14
相关资源
相似解决方案