如何在 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; }
所以我喜欢做的是:
[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; }