Как выполнить проверку строки "не нравится" в модели представления в ASP. NET MVC5? - PullRequest
0 голосов
/ 11 июля 2020

Так что мне нравится делать:

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

Возможно ли это? Я читал документы от Microsoft и не нашел ничего подобного.

Ответы [ 3 ]

3 голосов
/ 11 июля 2020

Вы должны использовать 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 или что-нибудь, что соответствует вашим требованиям.

2 голосов
/ 11 июля 2020

Вы можете использовать для этого регулярное выражение

[RegularExpression(@"^((?!Forbidden value).)*$", ErrorMessage = "Characters are not allowed.")]
public string Title { get; set; }
2 голосов
/ 11 июля 2020

У меня есть два решения для вашего вопроса:

1. Используйте [RegularExpression ()]

Вы можете использовать регулярное выражение и создать свой собственный шаблон для проверки

Для получения дополнительной информации посмотрите эту ссылку: Регулярное выражение аннотации данных

2. Создать новую аннотацию к настраиваемым данным

Вы можете создать новую аннотацию к настраиваемым данным (например, то, что вы сделали в вопросе)

Для получения дополнительной информации перейдите по этой ссылке: Как сделать создать пользовательские валидаторы аннотаций данных

...