Проверьте как минимум два слова в текстовом поле asp: - PullRequest
1 голос
/ 03 августа 2009

Здравствуйте. Я хочу проверить ввод, поэтому метод подсчета слов следующий:

public static string validateisMoreThanOneWord(string input, int numberWords)
        {
            try
            {
                int words = numberWords;
                for (int i = 0; i < input.Trim().Length; i++)
                {
                    if (input[i] == ' ')
                    {
                        words--;
                    }
                    if (words == 0)
                    {
                        return input.Substring(0, i);
                    }
                }
            }
            catch (Exception) { }
            return string.Empty;
        }

Где я поместил этот метод, поэтому, когда метод возвращает пустой после проверки, страница не будет отправлять обратно (как RequireFieldValidator на AjaxToolKit)

Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 августа 2009

Реализуйте его как пользовательский валидатор . См. http://aspnet.4guysfromrolla.com/articles/073102-1.aspx для примера

Если вы не хотите, чтобы он работал без обратной передачи, вам также следует реализовать клиентскую версию проверки в Javascript. Вы могли бы сделать так, чтобы клиентская версия выполняла AJAX-вызов для реализации C #, но это довольно простая логика - поэтому я бы решил реализовать ее в Javascript и сохранить пользователю AJAX-запрос.

2 голосов
/ 03 августа 2009

Прежде всего, вы можете упростить это много:

public static bool validateIsMoreThanOneWord(string input, int numberWords)
{
    if (string.IsNullOrEmpty(input)) return false;

    return ( input.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries).Length >= numberWords);    
}

Эта версия также имеет то преимущество, что ее легко расширять, добавляя другие пробелы, такие как табуляция или возврат каретки.

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

var numberWords = 2;
function checkWordCount(source, args)
{         
   var words = args.Value.split(' ');
   var count = 0;
   for (int i = 0; i<words.length && count<numberWords;i++)
   {
      if (words[i].length > 0) count++;
   }
   args.IsValid = (count >= numberWords);
   return args.IsValid;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...