如何在 ASP.NET MVC5 的视图模型中进行字符串 "not like" 验证?

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()]

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

有关更多信息,请查看此 link:

2。创建新的自定义数据注释

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

有关更多信息,请查看此 link:How to create Custom Data Annotation Validators

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

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