繁体   English   中英

如何在 ASP.NET MVC5 中的视图 model 中进行字符串“不喜欢”验证?

[英]How to do string “not like” validation in view model in ASP.NET MVC5?

所以我喜欢做的是:

   [NotLike(Value = "Forbidden value")]
   public string Title { get; set; }
 

可能吗? 我已经阅读了 Microsoft 的文档,但找不到类似的内容。

您应该使用ValidationAttribute并从它继承如下:

 public class NotLikeAttribute : ValidationAttribute
{
    private string _NotLikeStr = "";
    public NotLikeAttribute(string notLikeStr)
    {
        this._NotLikeStr = notLikeStr;
    }
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value != null)
        {
            if (!((string)value).Contains(_NotLikeStr))
            {
                var memberName = validationContext.MemberName;
                var errorMsg = "Your Message";
                return new ValidationResult(errorMsg);
            }
        }
        return null;
    }
}

并按如下方式装饰您的财产:

 [NotLike("Forbidden value")]
   public string Title { get; set; }

当然不是使用下面的行

 if (!((string)value).Contains(_NotLikeStr))

您可以split string to multiple words或使用Regular expression或任何满足您要求的内容。

对于你的问题,我有两个解决方案:

1.使用[RegularExpression()]

您可以使用正则表达式并创建自己的验证模式

有关更多信息,请查看此链接: 数据注释正则表达式

2. 创建新的自定义数据注解

您可以创建新的自定义数据注释(就像您在问题中所做的那样)

有关更多信息,请查看此链接: 如何创建自定义数据注释验证器

您可以为此使用正则表达式

[RegularExpression(@"^((?!Forbidden value).)*$", ErrorMessage = "Characters are not allowed.")]
public string Title { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM