Пользовательский атрибут проверки, который запрещает ввод списка недопустимых символов в текстовом поле - PullRequest
0 голосов
/ 18 октября 2019

Я студент колледжа, работающий с Asp.net MVC, мне нужно настроить пользовательскую проверку, которая предотвращает ввод определенных символов, например @ # $% * и т. Д. Для определенного поля. Я знаю, что пользовательские проверки - это немного хлопотно, но это то, к чему призывает эта часть назначения. Я не возражаю против того, чтобы печатать одним пальцем, но колледж получает все удовольствие от изучения любой темы программирования или языка, потому что я не могу тратить столько времени, сколько хочу научиться умелой реализации концепций. В этом случае пользовательская проверка.

Я уже создал класс InvalidCharsAttribute и уже добавил необходимое поле в необходимый класс следующим образом ...

InvalidCharsAttribute.cs

using System.ComponentModel.DataAnnotations;


namespace EnrollmentApplication.Models
{
    public class InvalidCharsAttribute : ValidationAttribute

    {
        readonly string invalidChars;

        public InvalidCharsAttribute(string invalidChars)
        {
            this.invalidChars = invalidChars;
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)
            {
                if ((string)value == invalidChars)
                {

                 return new ValidationResult("Notes contains unacceptable characters");


                }
            }

            return ValidationResult.Success;
        }
    }

Поле для проверки на наличие недопустимых символов

 [InvalidChars(@"[*&%#@$^!]", ErrorMessage = "*&%#@$^! are invalid characters")]
        public virtual string Notes { get; set; }

Я знаю, что if ((string)value == invalidChars) не так, я просто не уверен, как переписать / добавитькод, так что моя пользовательская проверка работает. Самое простое решение было бы здорово.

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать реализацию Regex для проверки вашей строки с помощью регулярного выражения. Если строка, которую вы сравниваете, совпадает с любым из недопустимых символов, тогда ответ будет больше нуля, и в этом случае ваш код должен вернуть false:

    Regex.Matches(yourstring,@"[a-zA-Z]").Count;

Отредактированный код будет выглядеть так:

    if (value != null)
        {
            if (Regex.Matches(((string)value),@"[*&%#@$^!]").Count > 0)
            {

             return new ValidationResult("Notes contains unacceptable characters");

            }
        }

Попробуйте, реализация Regex может помочь вам в проверке.

regards,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...